91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux常用命令ld怎么用

發布時間:2022-02-17 09:29:50 來源:億速云 閱讀:413 作者:小新 欄目:開發技術

這篇文章主要為大家展示了“Linux常用命令ld怎么用”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Linux常用命令ld怎么用”這篇文章吧。

Linux常用命令ld 命令是二進制工具集 GNU Binutils 的一員,是 GNU 鏈接器,用于將目標文件與庫鏈接為可執行文件或庫文件

Linux常用命令ld怎么用

命令格式

 ld [OPTIONS] OBJFILES

選項說明

ld 命令支持眾多鏈接選項,但是大部分選項很少被使用,下面是 GNU ld 命令接受的選項。

 -b  指定目標代碼輸入文件的格式
 -Bstatic
  只使用靜態庫
 -Bdynamic
  只使用動態庫
 -Bsymbolic
  把引用捆綁到共享庫中的全局符號
 -c, --mri-script=  為與 MRI 鏈接器兼容,ld 接受由 MRI 命令語言編寫的腳本文件
 --cref
  創建跨引用表
 -d,-dc,-dp
  即使指定了可重定位的輸出文件(使用-r),也會為公共符號分配空間。腳本命令“FORCE_COMMON_ALLOCATION”具有相同的效果
 -defsym
  在輸出文件中創建指定的全局符號
 -demangle
  在錯誤消息中還原符號名稱
 -e  使用指定的符號作為程序的初始執行點
 -E,--export-dynamic
  對于ELF格式文件,創建動態鏈接的可執行文件時,把所有符號添加到動態符號表
 -f, --auxiliary=  對于 ELF 格式共享對象,設置 DT_AUXILIARY 名稱
 -F, --filter=  對于ELF格式共享對象,設置 DT_FILTER 名稱。這告訴動態鏈接器,正在創建的共享對象的符號表應該用作共享對象名稱的符號表的篩選器。
 -g
  被忽略。用于提供和其他工具的兼容性
 -h
  對于 ELF 格式共享對象,設置 DT_SONAME 名稱
 -I, -dynamic-linker, --dynamic-linker=  指定動態鏈接器。這僅在生成依賴動態鏈接庫的 ELF 可執行文件時才有意義。默認的動態鏈接器通常是正確的,除非您知道正在做什么,否則不要使用該選項。
 -l, --library=  把指定的庫文件添加到要鏈接的文件清單
 -L, --library-path=searchdir
  把指定的路徑添加添加到搜索庫的目錄清單
 -M, --print-map
  顯示鏈接映射,用于診斷目的
 -Map=:
  將鏈接映射輸出到指定的文件
 -m  模擬指定的鏈接器
 -N,--omagic
  指定讀取/寫入文本和數據段
 -n,--nmagic
  關閉節的頁面對齊,并禁用對共享庫的鏈接。如果輸出格式支持Unix樣式的幻數,則將輸出標記為"NMAGIC"
 -noinhibit-exec
  生成輸出文件,即使出現非致命鏈接錯誤。通常,如果鏈接器在鏈接過程中遇到錯誤,它將不會生成輸出文件。
 -no-keep-memory
  ld 通常在內存中緩存輸入文件的符號表來優化內存使用速度。此選項告訴 ld 不要緩存符號表。當鏈接大型可執行文件時,如果ld耗盡內存空間,則可能需要使用該選項
 -O  對于非零的優化等級,ld將優化輸出。此操作會比較耗時,應該在生成最終的結果時使用。
 -o, --output=  指定輸出文件的名稱
 -oformat=  指定輸出文件的二進制格式
 -R,--just-symbols=  從指定的文件讀取符號名稱和地址
 -r,--relocatable
  生成可重定位的輸出(稱為部分連接)
 -rpath=  把指定的目錄添加到運行時庫搜索路徑
 -rpath-link=  指定搜索運行時共享庫的目錄
 -S,--strip-debug
  忽略來自輸出文件的調試器符號信息
 -s,--strip-all
  忽略來自輸出文件的所有符號信息
 -shared, -Bshareable
  創建共享庫
 -split-by-file[=size]
  為每個目標文件在輸出文件中創建額外的段大小達到size。size默認為1
 -split-by-reloc[=count]
  按照指定的長度在輸出文件中創建額外的段
 --section-start==  在輸出文件中指定的地址定位指定的段
 -T, --script=  使用 scriptfile 作為鏈接器腳本。此腳本將替換 ld 的默認鏈接器腳本(而不是添加到其中),因此腳本必須指定輸出文件所需的所有內容。如果當前目錄中不存在腳本文件,ld 會在 -L 選項指定的目錄中查找
 -Ttext=  使用指定的地址作為文本段的起始點
 -Tdata=  使用指定的地址作為數據段的起始點
 -Tbss=  使用指定的地址作為bss段的起始點
 -t,--trace
  在處理輸入文件時顯示它們的名稱
 -u, --undefined=  強制指定符號在輸出文件中作為未定義符號
 -v, -V, --version
  示ld版本號
 -warn-common
  當一個通用符號和另一個通用符號結合時發出警告
 -warn-constructors
  如果沒有使用任何全局構造器,則發出警告
 -warn-once
  對于每個未定義的符號只發出一次警告
 -warn-section-align
  如果為了對齊而改動了輸出段地址,則發出警告
 --whole-archive
  對于指定的存檔文件,在存檔中包含所有文件
 -X, --discard-locals
  刪除所有本地臨時符號
 -x, --discard-al
  刪除所有本地符號

4.常用示例

(1)鏈接目標文件生成可執行文件。給定C++目標文件test.o與main.o,生成可執行文件test.out。

 ld /usr/lib64/crt1.o /usr/lib64/crti.o /usr/lib64/crtn.o /usr/lib/gcc/x86_64-redhat-linux/4.8.5/crtbegin.o /usr/lib/gcc/x86_64-redhat-linux/4.8.5/crtend.o -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5 -L/usr/lib64 -L/usr/lib -lstdc++ -lm -lgcc_s -lc -lgcc  main.o test.o -o test.out

因為生成一個C++可執行文件,需要依賴很多系統庫和相關的目標文件,比如C語言庫libc.a,所以使用ld進行鏈接時,需要注意添加較長的命令選項,不然會報鏈接錯誤。使用g++ -v命令可以查看最后一行collect2使用的命令選項,進而了解生成可執行文所需的相關依賴。

 g++ -v main.o test.o
 ...
 usr/libexec/gcc/x86_64-redhat-linux/4.8.5/collect2 --build-id --no-add-needed --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 /usr/lib64/crt1.o /usr/lib64/crti.o /usr/lib64/crtn.o /usr/lib/gcc/x86_64-redhat-linux/4.8.5/crtbegin.o /usr/lib/gcc/x86_64-redhat-linux/4.8.5/crtend.o -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5 -L/usr/lib64 -L/usr/lib -lstdc++ -lm -lgcc_s -lc -lgcc  main.o test.o

以上是“Linux常用命令ld怎么用”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

旬邑县| 荔波县| 彰武县| 临湘市| 栖霞市| 门源| 红河县| 衡山县| 新竹县| 芒康县| 临汾市| 镇平县| 象州县| 青铜峡市| 神农架林区| 诸城市| 蓝田县| 日土县| 英吉沙县| 喀喇沁旗| 濉溪县| 辽中县| 海淀区| 韩城市| 临泽县| 巩留县| 弥渡县| 文成县| 乐都县| 潮州市| 临城县| 喜德县| 三河市| 鲁山县| 专栏| 太仓市| 宕昌县| 旌德县| 昆明市| 新晃| 长春市|