ld 1
目录
- NAME ld
- 总览 (SYNOPSIS)
- 描述 (DESCRIPTION)
- 选项 (OPTIONS)
- 环境 (ENVIRONMENT)
- 另见 (SEE ALSO)
- COPYING Copyright (c) 1991, 92, 93, 94, 95, 96, 97, 1998 Free Software Foundation, Inc. .PP 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. .PP 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. .PP 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. .SH
- [中文版最新更新]
- 《中国Linux论坛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’.
é项çåæ°
å¿é¡»
åºç°å¨
代表
é项 ç 忝
åé¢,
å¯ä»¥æ
空ç½ç¬¦,
ä¹å¯ä»¥
没æ.
-Aarchitecture
å¨ ç®åçæ¬ ç 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