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