ld 1

中文man手册

ld

NAME
æ»è§ (SYNOPSIS)
æè¿° (DESCRIPTION)
é项 (OPTIONS)
ç¯å¢ (ENVIRONMENT)
å¦è§ (SEE ALSO)
COPYING
[䏿çç»´æ¤äºº]
[ä¸æçææ°æ´æ°]
ãä¸å½Linux论åmanæå页翻è¯è®¡åã
è·

NAME

ld - GNU linker (è¿æ¥å¨)

æ»è§ (SYNOPSIS)

ld

[-o output] objfile...

[-Aarchitecture] [-b input-format] [-Bstatic] [-Bdynamic] [-Bsymbolic] [-c commandfile] [--cref] [-d|-dc|-dp]
[-defsym symbol = expression] [--demangle] [--no-demangle] [-e entry] [-embedded-relocs] [-E] [-export-dynamic] [-f name] [--auxiliary name] [-F name] [--filter name] [-format input-format] [-g] [-G size] [-h name] [-soname name] [--help] [-i] [-lar] [-Lsearchdir] [-M] [-Map mapfile] [-m emulation] [-n|-N] [-noinhibit-exec] [-no-keep-memory] [-no-warn-mismatch] [-Olevel] [-oformat output-format] [-R filename] [-relax] [-r|-Ur] [-rpath directory] [-rpath-link directory] [-S] [-s] [-shared] [-sort-common] [-split-by-reloc count] [-split-by-file] [-T commandfile] [-Ttext textorg] [-Tdata dataorg] [-Tbss bssorg] [-t] [-u sym] [-V] [-v] [--verbose] [--version] [-warn-common] [-warn-constructors] [-warn-multiple-gp] [-warn-once] [-warn-section-align] [--whole-archive] [--no-whole-archive] [--wrap symbol] [-X] [-x]

æè¿° (DESCRIPTION)

ld åå¹¶ ä¸ç» ç®æ æä»¶(object) å åºæä»¶(archive), éå®ä½ æ°æ®é¨å, æå»º 符å·å¼ç¨(symbol reference). ä¸è¬è¯´æ¥, ç¼è¯ çæ å¯æ§è¡æä»¶ ç æåæ¥éª¤ å°±æ¯ è°ç¨ ld.

ld å¯ä»¥è¯»å ç¨ è¿æ¥å¨å½ä»¤è¯è¨(Linker Command Language) ç¼åç èæ¬æä»¶, å® è½å¤ 对 è¿æ¥è¿ç¨ æä¾ 精确 å å¨é¢ ç æ§å¶. æ¬ æå页 ä¸è®¨è®º å½ä»¤è¯è¨; å¯åç ‘info’ ç ‘ld’ 项, æè æå ld: the GNU linker , é颿 å½ä»¤è¯è¨ ç ç»è å å¶ä» GNU linker ç å容.

è¿ä¸ªçæ¬ ç ld ä½¿ç¨ éç¨BFDåº æä½ ç®æ æä»¶, ld è½å¤ 以 å¤ç§æ ¼å¼ 读å¥, è¿æ¥ å è¾åº ç®æ æä»¶ —ä¾å¦ COFF æ a.out, è½å¤ æ ä¸åçæ ¼å¼ è¿æ¥ å¨ä¸èµ·, 产ç åç§ ææ ç ç®æ æä»¶. ç¨ ‘objdump -i’ å¯ä»¥ ååº åç§ ä½ç³»ç»æ æ¯æ ç æ ¼å¼ å表; å¦è§ objdump(1).

GNU linker ä¸ä» çµæ´» 强大, è¿è½å¤ æ¯ å¶ä» linker æä¾ æ´å¤ ç è¯æ- ä¿¡æ¯. å¾å¤ linker åªè¦ ç¢°ä¸ ä¸ä¸ªé误 å°± ç«å»åæ¢ æ§è¡; è ld 䏿å¯è½ ä»ç¶ ç»§ç»æ§è¡, è¿æ · 容æ å®ä½åº å¶ä»é误 (æäºæåµä¸, 尽管åºäºé, ä»ç¶ çæ è¾åºæä»¶).

GNU linker ld ææ å®ç° æ´å¹¿æ³ ç éç¨èå´, å°½å¯è½ å¼å®¹ å¶ä» linker. éè¿ å½ä»¤è¡ å ç¯å¢åé, ç¨æ· å¯ä»¥ ç¨ ld æ§è¡ å¤ç§ æä½.

é项 (OPTIONS)

è¿äºä¸°å¯ç å½ä»¤è¡é项 使人 æå° åæ, å¥½å¨ å®éä½¿ç¨ ä¸, 夿°æåµä¸ åªéè¦ ææ¡ å¶ä¸ ä¸å°é¨å. ä¾å¦, å¨ ä¸ä¸ª æ åç, æä¾ ç¸åºæ¯æ ç Unix ç³»ç» ä¸, 常常 ç¨ ld è¿æ¥ æ åç Unix ç®æ æä»¶. å¦æè¦ è¿æ¥ hello.o:

$ ld -o output /lib/crt0.o hello.o -lc

å® åè¯ ld çæ ä¸ä¸ª å«å output ç æä»¶ , å¶ä¸ è¿æ¥äº æä»¶ /lib/crt0.o å hello.o 以å åºæä»¶ libc.a (å¨ æ åæç´¢ç®å½ä¸).

ld ç å½ä»¤è¡é项 å¯ä»¥ ä»»æé¡ºåº åºç°, çè³ éå¤åºç°. 夿° æåµ ä¸, 妿 ç¨ ä¸åç åæ° éå¤ åä¸ç§ é项, ld ä¸ä¼ åºç° æ´å¤çåå, ä¹ä¸ä¼ è¦ç 以åç åæ°. (æ å½ä»¤è¡ ä¸ å·¦è¾¹çåæ°)

ä¾å¤æåµ — æäºé项 æ åå¤ä½¿ç¨ ç éè¦ — å¦ -A, -b (æçåç -format), -defsym, -L, -l, -R, å -u.

å¾è¿æ¥ç ç®æ æä»¶ å表, å³ æ»è§ä¸ç objfile, å¯ä»¥ æ¾å¨ å½ä»¤è¡é项 ç åé¢, åé¢, æè æ··æå¶ä¸; 使¯ ä¸è½ æ objfile æ¾ç½®äº æä¸ª é项å¼å³ å å®çåæ° ä¸é´.

ä¸è¬è¯´æ¥ linker è¦æ± è³å° è¾å¥ ä¸ä¸ª ç®æ æä»¶, 使¯ å¯ä»¥ ç¨ -l, -R è¾å¥ å¶ä»æ ¼å¼ ç äºè¿å¶æä»¶, æè ç¨ å½ä»¤è¯è¨ ç¼åç èæ¬æä»¶. 妿 æ²¡æ æå® äºè¿å¶æ ¼å¼ ç è¾å¥æä»¶, linker å°±ä¸è½ 产ç è¾åºæä»¶, èæ¯ æ¾ç¤º ‘No input files’.

é项çåæ° å¿é¡» åºç°å¨ 代表 é项 ç 忝 åé¢, å¯ä»¥æ 空ç½ç¬¦, ä¹å¯ä»¥ 没æ.
-A
architecture

å¨ ç®åçæ¬ ç ld ä¸, è¿ä¸ª é项 ä»éç¨äº Intel 960 ä½ç³»ç³»å. å¨ ld ç 设置 ä¸, architecture åæ° æ¯ 960 ç³»å ç æå è¯å«åç§° ä¹ä¸, ç± ä¸¤ä¸ªåæ¯ ç»æ; è¿ä¸ªé项 æåº ææç è¾åºç®æ , 对 è¾å¥æä»¶ ç ä¸å¼å®¹æä»¤ ä½åº è¦å. å® è½å¤ æ¹å linker 对 åºæä»¶ ç æç´¢çç¥, ä»¥ä¾¿äº æ¯æ ä½ç³»ç¸å³åº, æ¹æ³æ¯ æ ä½ç³»è¯å«åç§° æ·»å å¨ å¾æç´¢ ç æä»¶å å°¾é¨.

ä¾å¦, 妿 ld å½ä»¤è¡ æ ‘-ACA’ å ‘-ltry’, linker å° æç´¢ (æ ¹æ® åç½®çè·¯å¾ å -L æå®çè·¯å¾) ä»¥ä¸ åç§° ç åºæä»¶

try
libtry.a
tryca
libtryca.a

å两项 æ¯ å¸¸è§åæ³; å两项 æºäº ‘-ACA’.

å°æ¥åå¸ç ld å¯è½ 对 å¶ä» ä½ç³»ç»æ æä¾ 类似åè½.

å¯ä»¥ å¨ å½ä»¤è¡ä¸ ä½¿ç¨ å¤ä¸ª -A é项, åªè¦ 该 ä½ç³» å许 å ç®æ ä½ç³» ç¸è¿, å¶é项 使 ld å¨ æç´¢ -l æå®çåº ä¸, å¢å  å ä½ç³»ç»æåç§° 对åºçåº.

-b input-format

æå® è¾å¥ç®æ æä»¶ ç äºè¿å¶æ ¼å¼, ç®æ æä»¶ å¨ å½ä»¤è¡ ä¸ ç»åº, æ¾å¨ è¿ä¸ªé项 ç åé¢. ä¸è¬ ä¸éè¦ æå® è¿ä¸ªé项, ld ç 缺çè¾å¥æ ¼å¼ é置为 å个æºå¨ ä¸ æå¸¸ç¨ ç æ ¼å¼. input-format æ¯ å符串, BFD åº æ¯æç æ ¼å¼ åç§°. é项 -format input-format èµ· ç¸åç ä½ç¨, èæ¬å½ä»¤ TARGET 乿¯ 䏿 ·.

è¿æ¥ æäº ä¸å¯»å¸¸ç äºè¿å¶æä»¶ æ¶ éè¦ è¿ä¸ªé项. æè ä½¿ç¨ -b é项 å¼ºè° æ ¼å¼åæ¢ (è¿æ¥ ä¸åæ ¼å¼ ç ç®æ æä»¶), æ¯å¦è¯´, å¨ æ¯ç» ç¹å®æ ¼å¼ ç ç®æ æä»¶ åé¢ ä½¿ç¨ -b input-format é项.

ç¯å¢åé GNUTARGET ç¨äº æå® ç¼ºçæ ¼å¼. ä¹å¯ä»¥ å¨ èæ¬æä»¶ ä¸ ç¨ TARGET å½ä»¤ å®ä¹ è¾å¥æ ¼å¼.

-Bstatic

ç¦æ¢ è¿æ¥ å±äº«åº. è¿ä¸ªé项 åªå¨ æ¯æ å±äº«åº ç å¹³å° ä¸ ææä¹.

-Bdynamic

è¿æ¥ 卿åº. è¿ä¸ªé项 åªå¨ æ¯æ å±äº«åº ç å¹³å° ä¸ ææä¹, ä¸è¬è¯´æ¥ å® æ¯ ç¼ºçé项.

-Bsymbolic

å½ å建 å±äº«åº ç æ¶å, åªè¦ æå¯è½, å¨ å±äº«åº å ç¼è(bind reference) å¨å±ç¬¦å· å å®ä¹(definition). ä¸è¬è¯´æ¥, å许 è¿æ¥äº æä¸ª å±äº«åº ç ç¨åº è¦ç å±äº«åºå ç å®ä¹. è¿ä¸ªé项 åªå¨ æ¯æ å±äº«åº ç ELF å¹³å° ä¸ ææä¹.

-c commandfile

åè¯ ld ä» æä»¶ commandfile ä¸ è¯»å è¿æ¥ å½ä»¤. è¿äº å½ä»¤ å½»åºç è¦ç ld ç 缺ç è¿æ¥ æ ¼å¼ (è䏿¯ æ·»å ); commandfile å¿é¡» è¯¦å°½ç æè¿° ç®æ æ ¼å¼ ç ææç»è.

ä½  ä¹å¯ä»¥ å¨ å½ä»¤è¡ ä¸ ç´æ¥åµå¥ è¿æ¥å½ä»¤, æ èæ¬ åµå¨ 大æ¬å¼§ ‘{’ å ‘}’ ä¸é´.

--cref

è¾åº 交åå¼ç¨è¡¨(cross reference). 妿 åå»ºäº è¿æ¥æ å(linker map) æä»¶, 交åå¼ç¨è¡¨ å°± è¾åºå° æ åæä»¶ ä¸, å¦å éå¾ æ åè¾åº.

-d

-dc

-dp

è¿ ä¸ä¸ªé项 æ¯ ä¸åäº, ä¸ºäº å¼å®¹ å¶ä» linker è åæ¶æä¾. å³ä½¿ å·²ç» æå® ld çæ å¯éå®ä½æä»¶ (-r), å®ä»¬ è½ä¸º å¬å±ç¬¦å·(common symbol) åé 空é´. èæ¬å½ä»¤ FORCE_COMMON_ALLOCATION èµ· åæ ·ä½ç¨.

-defsym symbol = expression

å¨ è¾åºæä»¶ ä¸ å建 ä¸ä¸ª å¨å±ç¬¦å·, å® å«æ expression ç»åºç ç»å¯¹å°å. å¯ä»¥ å¨ å½ä»¤è¡ ä½¿ç¨ å¤ä¸ª è¿æ ·ç é项. è¿ä¸ª expression åªè½ ä½¿ç¨ æéç æ°å¦å½¢å¼: ååè¿å¶å¸¸æ°, å·²ç»åå¨ ç 符å·åå. æè ä½¿ç¨ + å - å å ååè¿å¶å¸¸æ° æ 符å·. 妿 éè¦ æ´å¤æç 表达å¼, èè ä½¿ç¨ å½ä»¤è¯è¨èæ¬.

--demangle
--no-demangle

è¿äºé项 æ§å¶ æ¯å¦å¨ åºéä¿¡æ¯ å å¶ä»ä¿¡æ¯ ä¸, è¾åº å¯è¯»ç(demangle) 符å·åç§°. 妿 使ç¨äº demangle é项, linker å°½é使 符å·åç§° 容æçè§£: 廿 é¢å¤´ç ä¸å线 (妿 被 ç®æ æä»¶æ ¼å¼ éç¨); æ C++ 龿ç 符å·åç§° (symbol name) è½¬æ¢æ å¯è¯»ç åç§°. 缺çæåµä¸ linker è¾åº å¯è¯»ç 符å·åç§°, é¤é è®¾ç½®äº ç¯å¢åé COLLECT_NO_DEMANGLE . è¿äºé项 è½å¤ è¦ç 缺çè¡ä¸º.

-e entry

ä½¿ç¨ entry (å¥å£) æ è¯ç¬¦ ä½ä¸º ç¨åº æ§è¡ ç å¼å§ç«¯, è䏿¯ 缺çå¥å£. å³äº 缺çå¥å£ å å¶ä» 设置 å¥å£ ç æ¹æ³ åè§ ‘info’ ç ld’ 项.

-embedded-relocs

è¿ä¸ªé项 ä»ç¨äº è¿æ¥ MIPSä¸ åµå¥ç PIC 代ç , GNU ç ç¼è¯å¨ å æ±ç¼å¨ ç¨ -membedded-pic é项 è½å¤ çæ è¿ç§ä»£ç . å®ä½¿ linker å建 ä¸å¼  表格, ç¨äº å¨ è¿è¡çæ¶å, éå®ä½ ä»»ä½ è¢« éæåå§å 为 æéå¼ ç æ°æ®. è¯¦è§ testsuite/ld-empic ç 代ç .

-E

-export-dynamic

å½ å建 ELF æä»¶ æ¶, æ ææ ç¬¦å· å å¥ å¨æç¬¦å·è¡¨. ä¸è¬è¯´æ¥, å¨æç¬¦å·è¡¨ åªåå« å¨æç®æ åº(dynamic object) éè¦ç 符å·. ç¨ dlopen ç æ¶å éè¦ è¿ä¸ª é项.

-f name
--auxiliary
name

å建 ELF å±äº«ç®æ åº æ¶, æ åé¨ç DT_AUXILIARY åæ®µ 设置为 name. å® åè¯ å¨ælinker, æ 该 å±äº«ç®æ åº ç 符å·è¡¨ ç¨å å±äº«ç®æ name ç 符å·è¡¨ ç è¾å©è¿æ»¤å¨.

-F name
--filter
name

å建 ELF å±äº«ç®æ åº æ¶, æ åé¨ç DT_FILTER åæ®µ 设置为 name. å® åè¯ å¨ælinker, æ 该 å±äº«ç®æ åº ç 符å·è¡¨ ç¨å å±äº«ç®æ name ç 符å·è¡¨ ç è¾å©è¿æ»¤å¨.

-format input-format

çåäº -b input-format.

-g

è设项; ç¨äº å¼å®¹ å¶ä» å·¥å·.

-G sizeæ ä½¿ç¨ GP å¯åå¨ ä¼åç ç®æ (æä»¶) å¤§å° éå¶ä¸º

size . ç¨äº MIPS ECOFF, 对 å¶ä» ç®æ æä»¶æ ¼å¼ æ æ.

-h name
-soname
name

å建 ELF å±äº«ç®æ åº æ¶, æ åé¨ç DT_SONAME åæ®µ 设置为 name. 妿 æä¸ª 坿§è¡æä»¶ è¿æ¥äº 嫿 DT_SONAME åæ®µ ç å±äº«ç®æ åº, å½ è¯¥ç¨åº è¿è¡ æ¶, 卿 linker è¯å¾ æ ¹æ® DT_SONAME åæ®µ è°å¥ å±äº«ç ç®æ åº, è ä¸ä½¿ç¨ æä¾ç» linker ç æä»¶å.

--help

å¨ æ åè¾åº æ¾ç¤º å½ä»¤è¡é项 ç æè¦, ç¶å ç»æ. è¿ä¸ªé项 å --version é项 使ç¨äº 两个 çæ¨ªçº¿, 䏿¯ ä¸ä¸ª, ç®çæ¯ å¼å®¹ å¶ä» GNU ç¨åº. åªç¨ ä¸ä¸ª çæ¨ªçº¿ ç é项 æ¯ä¸ºäº å¼å®¹ å¶ä» linker.

-i

æ§è¡ å¢éè¿æ¥(incremental link), çåäº -r é项.

-lar

å¨ è¿æ¥æä»¶ å表 ä¸ å¢å  彿¡£åºæä»¶ ar. å¯ä»¥ 夿¬¡ ä½¿ç¨ è¿ä¸ªé项. å¡æå® ä¸é¡¹ ar , ld å°±ä¼ å¨ è·¯å¾å表 ä¸ å¢å  ä¸é¡¹ 对 libar.a ç æç´¢.

-Lsearchdir

è¿ä¸ªé项 å° è·¯å¾ searchdir æ·»å  å° è·¯å¾å表 ä¸å», ld å¨ è¿ä¸ª å表 ä¸ æç´¢ 彿¡£åº. å¯ä»¥ 夿¬¡ ä½¿ç¨ è¿ä¸ªé项.

缺çç æç´¢è·¯å¾é (ä¸ä½¿ç¨ -L æ¶) åå³äº ld 使ç¨ç æ¨¡ææ¨¡å¼(emulation) åå¶ éç½®. å¨ è¿æ¥èæ¬ ä¸, å¯ä»¥ ç¨ SEARCH_DIR å½ä»¤ æå® è·¯å¾.

-M

å¨ æ åè¾åº æ¾ç¤º è¿æ¥æ å — æå³ ld æ ç¬¦å· æ å°å° ä½å¤ ç è¯æ- ä¿¡æ¯, 以å å¨å±å¬å±åå¨å¨ ç åé ä¿¡æ¯.

-Map mapfileæ è¿æ¥æ å è¾åºå°

mapfile æä»¶ ä¸ — æå³ ld æ ç¬¦å· æ å°å° ä½å¤ ç è¯æä¿¡æ¯, 以å å¨å±å¬å±åå¨å¨ ç åé ä¿¡æ¯.

-m emulation模仿

emulation è¿æ¥å¨. å¯ä»¥ ç¨ --verbose æ -V é项 ååº ææç 模æé¡¹. è¿ä¸ªé项 è¦ç ç¼è¯ è¿å» ç 缺ç项.

-N

æå® å¯è¯»å ç æ£æ å æ°æ® è(section). 妿 è¾åºæ ¼å¼ æ¯æ Unix 飿 ¼ç å¹»æ°(magic number), å è¾åºæä»¶ æ è®°ä¸º OMAGIC.

å½ ä½¿ç¨ ‘-N’ é项 æ¶, linker ä¸å æ°æ®æ®µ ç 页对é½(page-align).

-n

设置 æ£ææ®µ 为 åªè¯», 妿 æå¯è½, NMAGIC 为 å¯å.

-noinhibit-exec

ä¸è¬è¯´æ¥, 妿 è¿æ¥ç æ¶å åç é误, linker ä¸ä¼ 产ç è¾åºæä»¶. 使ç¨äº è¿ä¸ª æ å¿é项, åªè¦ ä¸åº è´å½å·®é, ä»è½å¤ 产ç è¾åºæä»¶.

-no-keep-memory

linker é常 çºç² åå, ä¼å é度, å® æ è¾å¥æä»¶ ç 符å·è¡¨ ç¼å²å¨ ååä¸. è¿ä¸ªé项 使 linker å¿è¦æ¶ éå¤è¯»å 符å·è¡¨, 以便 ä¼å åå使ç¨. è¿æ¥ 大å 坿§è¡æä»¶ ç æ¶å, linker æå¯è½ åå ä¸å¤, æ¤æ¶ å¯ä»¥ è¯è¯ è¿ä¸ªé项.

-no-warn-mismatch

ä¸è¬æåµä¸, 妿 è¯å¾ è¿æ¥ æäº ä¸å¹é ç è¾å¥æä»¶, æ¯å¦è¯´, æ ä¸å å¤çå¨ ç¼è¯ ç, æè å·æ ä¸åç åè顺åº(endianness), linker å°±ä¼ æ¥é. è¿ä¸ªé项 åè¯ linker é»è®¸ è¿ç§ é误. è¦ å°å¿ä½¿ç¨ è¿ä¸ªé项, é¤é ä½ æ£å¨å æäº ç¹æ® æä½, èä¸ è½å¤ ç¡®å® ä¸éè¦ linker æ¥é.

-o output

output ç¨æ¥ æå® ld çæç ç¨åºå; 妿 没æ ä½¿ç¨ è¿ä¸ªé项, 缺çåå æ¯ ‘a.out’. èæ¬å½ä»¤ OUTPUT èµ· åæ · ä½ç¨.

-Olevel

çæ ä¼åç è¾åºæä»¶. è¿ä¸ªé项 å ç¨ æ¯è¾å¤ ç æ¶é´, å æ¤ ä» å¸¸ç¨äº æç»æä»¶ ç çæ. level æ¯ æ°å¼åæ°. ä»»ä½ å¤§äºé¶ ç åæ° æå³ç è¦æ± ä¼å.

-oformat output-format

æå® è¾åºç®æ æä»¶ ç äºè¿å¶æ ¼å¼. ä¸è¬ ä¸éè¦ æå® è¿ä¸ªé项, ld ç 缺ç è¾åºæ ¼å¼ é置为 å个æºå¨ ä¸ æå¸¸ç¨ ç æ ¼å¼. output-format æ¯ ä¸ä¸ª å符串, BFD åº æ¯æç æ ¼å¼ åç§°. èæ¬å½ä»¤ OUTPUT_FORMAT ä¹å¯ä»¥ æå® è¾åºæ ¼å¼, 使¯ è¿ä¸ªé项 è½å¤ è¦ç æ å®.

-R filename

ä» æä»¶ filename ä¸ è¯»å 符å·åç§° åå¶ å°å, 使¯ ä¸å éå®ä½, ä¸ä¼ éå° è¾åºç«¯. å® å¯ä»¥ 使 è¾åºæä»¶ 符å·å¼ç¨ å¶ä»ç¨åºä¸ å®ä¹ç ç»å¯¹å°å.

-relax

è¿ä¸ªé项 ç ææ åå³äº æºå¨, ç®å åªæ¯æ H8/300.

å¨ æäº å¹³å° ä¸ å¯ä»¥ ä½¿ç¨ è¿ä¸ªé项 å å¨å±ä¼å, å® è®© linker è§£å³ ç¨åºä¸ ç å°åå¤ç, ä¾å¦ å¨ è¾åºç®æ æä»¶ ä¸ ç¼å(relax) å°åæ¨¡å¼ ä»¥å åæ (synthesize) æ°æä»¤.

å¶ä»å¹³å° 乿¥å ‘-relax’ é项, 使¯ ä¸èµ·ä½ç¨.

-r

çæ å¯éå®ä½ è¾åº — å°±æ¯è¯´, çæç è¾åºæä»¶ è½å¤ 便¬¡ æä¸º ld ç è¾å¥, ä¸è¬ ç§°ä¹ä¸º ä¸å®å¨(partial) è¿æ¥. å® æ ä¸ä¸ª 坿åº, å¨ æ¯æ æ å Unix å¹»æ°(magic number) ç ç¯å¢ ä¸, è¿ä¸ªé项 æ è¾åºæä»¶ ç å¹»æ° è®¾ç½®æ OMAGIC. 妿 æ²¡æ æå® è¿ä¸ªé项, linker çæ ç»å¯¹å®ä½ ç æä»¶. è¿æ¥ C++ ç¨åºæ¶, è¿ä¸ªé项 ä¸ä¼ è§£æ åº å¯¹ æé å(constructor) ç å¼ç¨(reference); ä¸å¦¨ æ¹ç¨ -Ur é项.

è¿ä¸ªé项 ç ææ å -i 䏿 ·.

-rpath directory

å¢å  䏿¡ 对 è¿è¡æ¶(runtime)åº ç æç´¢è·¯å¾. è¿ä¸ªé项 ç¨äº è¿æ¥ ELF 坿§è¡ æä»¶ å å±äº«ç®æ åº. ææ -rpath é项 ç åæ° 被 åå¹¶, ç¶å ä¸èµ· ä¼ é ç» è¿è¡æ¶ linker, è¿è¡æ¶ linker å¨ è¿è¡ ç æ¶å ä½¿ç¨ è¿äº è·¯å¾ å¯»æ¾ å±äº«ç®æ åº. -rpath ä¹å¯ä»¥ ç¨æ¥ å®ä½ å±äº«ç®æ åº å¼ç¨ç å±äº«ç®æ åº; åè§ å¯¹ -rpath-link é项 ç åè¿°. 妿 è¿æ¥ ELF 坿§è¡æä»¶ æ¶ æ²¡æ æå® -rpath é项, linker å°±ä½¿ç¨ ç¯å¢åé LD_RUN_PATH ç å容 — åªè¦ è¿ä¸ª ç¯å¢åé åå¨.

-rpath é项 è½å¤ ç¨å¨ SunOS ä¸, 缺çç¶åµä¸, linker å¯ä»¥ æ ¹æ® ç»åºç -L é项 å½¢æ è¿è¡æ¶ æç´¢è·¯å¾. 妿 使ç¨äº -rpath é项, è¿è¡æ¶ æç´¢è·¯å¾ ä» -rpath ä¸ äº§ç, è å¿½ç¥ -L é项. è¿ä¸ç¹ æå©äº ä½¿ç¨ gcc, å¨ NFS æä»¶ç³»ç» ä¸, gcc å¯è½ 产ç è®¸å¤ -L é项.

-rpath-link directory

ä½¿ç¨ ELF æ SunOS ç æ¶å, æäº å±äº«åº å¯è½ éè¦ å¶ä» å±äº«åº. è¿ç§æåµ ä¸è¬ åçå¨ æä¸ª ld -shared è¿æ¥ ä¸, è¾å¥æä»¶ åå«äº å±äº«åº.

妿 linker éå° è¿æ ·ç ä¾èµæåµ, å½ å® æ§è¡ éå±äº«, ä¸å¯éå®ä½ ç è¿æ¥ æ¶, linker å° èªå¨ å¯»æ¾ æéç å±äº«åº, 妿 å®ä»¬ 没æ 被 æ¾æ åå«, å°± æ å®ä»¬ åå«å° è¿æ¥ ä¸. å¨ è¿ç§æåµä¸, -rpath-link é项 æå®äº æå æç´¢ ç ç®å½é. -rpath-link è½å¤ æå® 䏿¹ ç®å½, ç®å½ ç¨ åå· éå¼. ä¹å¯ä»¥ ç¨ è¿äº ç®å½å ä½ä¸º åæ°, éå¤ ä½¿ç¨ è¿ä¸ª é项.

妿 æ²¡æ æ¾å° éè¦ç å±äº«åº, linker 产ç ä¸ä¸ª è¦å, 使¯ ç»§ç» è¿æ¥.

-S

廿 è¾åºæä»¶ ä¸ç è°è¯ç¬¦å·ä¿¡æ¯ (ä½ä¸æ¯ ææç¬¦å·).

-s

廿 è¾åºæä»¶ ä¸ç å¨é¨ 符å·ä¿¡æ¯.

-shared

å建 ä¸ä¸ª å±äº«åº. ç®å åªæ¯æ ELF å SunOS å¹³å° (å¨ SunOS ä¸, è¿ä¸ªé项 䏿¯ å¿é¡»ç, 妿 没æ ä½¿ç¨ -e é项, èä¸ åå¨ ä¸ç¡®å® ç 符å·, linker å° èªå¨ å建 å±äº«åº).

-sort-common

ld é常 æ å¨å±å¬å±ç¬¦å· æ¾å° éå½ç è¾åºè, æç§ å¤§å° æåº. é¦åæ¯ ååè符å·, ç¶åæ¯ ååè, æ¥ä¸æ¥æ¯ ååè, é忝 å¶ä»ç. å®ç ç®çæ¯ é²æ¢ 符å·é´ å ä¸º æå¸éå¶ åºç° é´é. ä½¿ç¨ è¿ä¸ªé项 å¯ä»¥ ç¦æ¢ æåº.

-split-by-reloc count

å¨ è¾åºæä»¶ ä¸ å建 éå è(extra section), ä½¿å¾ è¾åºæä»¶ ä¸, æ²¡æ æä¸ä¸ª è¾åºè åå« å¤§äº count 个 éå®ä½é¡¹. å® ç¨äº 产ç 大å å¯éå®ä½ COFF ç®æ æä»¶, å¯ä»¥ æå¥å° æäº 宿¶åæ ¸ ä¸; å ä¸º COFF ä¸è½ å¨ åä¸èå åæ¾ 65535 以ä¸ç éå®ä½é¡¹. 注æ, æäº ç®æ æä»¶æ ¼å¼ 䏿¯æ ä»»æ åè, æ¤æ¶ è¿ä¸ªé项 å°ä¼ æä½ 失败. æ- ¤å¤, linker ä¸è½å¤ åå² è¾å¥è, ç¶å éæ°åé, å æ¤ 妿 æä¸ª è¾å¥è åå« count 以ä¸ç éå®ä½é¡¹, ç¸åºç è¾åºè å° åå« åæ ·å¤ç éå®ä½é¡¹.

-split-by-file

ç±»ä¼¼äº -split-by-reloc , 使¯ å®ä¸º æ¯ä¸ª è¾å¥æä»¶ 建ç«ä¸ä¸ª æ°ç è¾åºè.

-Tbss org

-Tdata org

-Ttext orgæ org

ä½ä¸º è¾åºæä»¶ ç æ®µ èµ·å§å°å — ç¹å«æ¯ — bss, data, æ text 段. org å¿é¡»æ¯ ååè¿å¶æ´æ°.

-T commandfile

çåäº -c commandfile; ç¨äº å¼å®¹ å¶ä»å·¥å·.

-t

å¨ ld å¤ç è¾å¥æä»¶ ç æ¶å æ¾ç¤º æä»¶å.

-u sym

æ sym ä½ä¸º æªå®ä¹(undefined) ç ç¬¦å· éå¥ è¾åºæä»¶. è¿æ ·å å¯ä»¥, ä¾å¦, ä¿ä½¿ linker ä» æ ååº è¿æ¥ æä¸ª éå ç模å. å许 ä½¿ç¨ å¤ä¸ª -u é项 è¾å¥ å¤ä¸ª æªå®ä¹ 符å·.

-Ur

å¯¹äº é¤ C++ 以å¤ç ä»»ä½ ç¨åº, è¿ä¸ªé项 çåäº -r: çæ å¯éå®ä½ ç è¾åº — å°±æ¯è¯´, è½å¤ 便¬¡ è¾å¥ ld ç è¾åºæä»¶. è¿æ¥ C++ ç¨åº ç æ¶å, -Ur å° è§£æ 对 æé å(constructor) ç å¼ç¨(reference), è¿ä¸ç¹ å -r ä¸å.

--verbose

æ¾ç¤º ld ç çæ¬å·, ååº æ¯æç æ¨¡æé¡¹(emulation). æ¾ç¤º åªäº è¾å¥æä»¶ è½å¤ æå¼, åªäº ä¸è½,

-v, -V

æ¾ç¤º ld ç çæ¬å·. æ¤å¤ -V é项 è½å¤ ååº æ¯æç æ¨¡æé¡¹.

--version

æ¾ç¤º ld ç çæ¬å· ç¶å ç»æ.

-warn-common

å½ å¬å±ç¬¦å· å å¶ä» å¬å±ç¬¦å· åå¹¶ æ¶, æè å æä¸ª 符å·å®ä¹ åå¹¶ æ¶, linker å°±ååº è¦å. Unix ç³»ç»ç linker å许 è¿ç§ æäº èç ç åæ³, å¶ä» æä½ç³»ç» å ä¸è¡. è¿ä¸ªé项 帮å©ä½  å¨ åå¹¶ å¨å±ç¬¦å· ç æ¶å åç° æ½å¨é®é¢.

-warn-constructors

妿 使ç¨äº å¨å±æé å(global constructor), linker å°±ååº è¦å. å® åªå¯¹ æäº ç®æ æä»¶ç»æ æç¨, å¯¹äº å¦ COFF æ ELF, æ¤ linker ä¸è½å¤ æ£æµ å¨å±æé å ç ä½¿ç¨æåµ.

-warn-multiple-gp

妿 è¾åºæä»¶ éè¦ å¤ä¸ª å¨å±æéå¼, linker å°±ååº è¦å. è¿ä¸ªé项 åªè½ ç¨äº æäº å¤çå¨, å¦ Alpha.

-warn-once

对 æ¯ä¸ª æªå®ä¹ç¬¦å· åª è¦å 䏿¬¡, è䏿¯ æ¯æ¬¡ å¼ç¨ è¿ä¸ªç¬¦å· é½ è¦å.

-warn-section-align

妿 æä¸ª è¾åºè(section) ç å°å å ä¸º è¾¹çå¯¹é½ è åç æ¹å, linker å°±ååº è¦å. å¸åæåµä¸ ç± è¾å¥è 设置 è¾¹ç, åªæ ä¸å æç¡®æå® ç æ¶å å°å æä¼ æ¹å; å°±æ¯è¯´, SECTIONS å½ä»¤ æ²¡æ æåº è¯¥è ç å¼å§å°å.

--whole-archive

å¯¹äº å½ä»¤è¡ ä¸ --whole-archive é项 æå°ç æ¯ä¸ª 彿¡£åº, è¿æ¥æ¶ è¿å¥ 彿¡£åº ç å¨é¨ ç®æ æä»¶, è䏿¯ å¨ å½æ¡£åº ä¸ æç´¢ æéç ç®æ æä»¶. ä¸è¬ç¨äº æ 彿¡£åºæä»¶ è½¬åæ å±äº«åºæä»¶, 迫使 å¨é¨ ç®æ æä»¶ è¿å¥ å±äº«åº.

--no-whole-archive

å³é --whole-archive é项 对 彿¡£åº ç å½±å.

--wrap symbol

对 symbol ä½¿ç¨ åè£å½æ°(wrapper function). ä»»ä½ å¯¹ symbol æªå®ä¹ ç å¼ç¨ (undefined reference) å° è§£æä¸º __wrap_symbol. ä»»ä½ å¯¹ __real_symbol æªå®ä¹ ç å¼ç¨ å° è§£æä¸º symbol.

-X

å é¤ å¨é¨ 临æ¶ç å±é¨ç¬¦å·. 大夿° ç®çæä»¶ ä¸, è¿äº å±é¨ç¬¦å· ç åå ç¨ ‘L’ å å¼å¤´.

-x

å é¤ å¨é¨ å±é¨ç¬¦å·.

ç¯å¢ (ENVIRONMENT)

éè¿ ç¯å¢åé GNUTARGET å¯ä»¥ æ¹å ld ç è¡ä¸º.

妿 没æ ä½¿ç¨ -b é项 (æ ç¸åç -format), GNUTARGET å³å®äº è¾å¥æä»¶ ç ç®æ æ ¼å¼, å¶å¼ åºä¸º BFDç åç§°ä¹ä¸. 妿 没æ GNUTARGET ç¯å¢åé, ld å°±ä½¿ç¨ ä¸»æºç æ¬å°æ ¼å¼. 妿 GNUTARGET 设置为 default, BFD éè¿ æ£æ¥ è¾å¥æä»¶ ç äºè¿å¶æ ¼å¼ 夿 è¾å¥æ ¼å¼; è¿ä¸ªæ¹æ³ é常 ææ, ä½ éå« æ- §ä¹, è¿æ¯å ä¸º 没æ åæ³ ä¿è¯ æ å¿ ç®æ æä»¶æ ¼å¼ ç å¹»æ° æ¯ å¯ä¸ç. ä¸è¿, åä¸ªç³»ç» éç½® BFD ç æ¶å, 伿 ç³»ç» çº¦å®çæ ¼å¼ æ¾å¨ æç´¢å表 ç åé¢, å æ¤ è½å¤ æç§ çº¦å® æ¶é¤ æ§ä¹.

å¦è§ (SEE ALSO)

objdump(1)
ld’ å ‘binutils’ 项 ( info)
ld: the GNU linker
, Steve Chamberlain and Roland Pesch; The GNU Binary Utilities, Roland H. Pesch.

COPYING

Copyright (c) 1991, 92, 93, 94, 95, 96, 97, 1998 Free Software Foundation, Inc.

Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.

Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.

Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that this permission notice may be included in translations approved by the Free Software Foundation instead of in the original English.

[䏿çç»´æ¤äºº]

徿 <xuming@users.sourceforge.net>

[ä¸æçææ°æ´æ°]

2003/05/13 第ä¸ç

ãä¸å½Linux论åmanæå页翻è¯è®¡åã

http://cmpp.linuxforum.net

è·

æ¬é¡µé¢ä¸æçç±ä¸æ man æå页计åæä¾ã
䏿 man æå页计åï¼https://github.com/man-pages-zh/manpages-zh