没有合适的资源?快使用搜索试试~ 我知道了~
首页GNU-ld-V2.30中文手册
GNU-ld-V2.30中文手册
5星 · 超过95%的资源 需积分: 47 62 下载量 8 浏览量
更新于2023-03-16
评论 3
收藏 860KB PDF 举报
GNU-LD V2.30 手册的中文翻译版。 相信都知道GNU-LD的强大,以英文原版为参考,看中文的手册能大大提高学习速度。
资源详情
资源评论
资源推荐
GNU LD(Linker)
中文翻译
version 2.30
2018.10.31
翻译:崔良金
微信号:leonkim999
邮箱:a2282@126.com
原文地址:https://sourceware.org/binutils/docs/ld/index.html
此翻译仅供参考,会包含一些错误,请谅解,也欢迎指正。
目录
1 概述
.................................................................................................................................................
4
2 调用
.................................................................................................................................................
4
2.1 命令行选项
.........................................................................................................................
4
2.1.1 i386 PE 专用的选项
............................................................................................
32
2.1.2 C6X uClinux 专用的选项
....................................................................................
38
2.1.3 Motorola 68HC11 和 68HC12 专用的选项
....................................................
39
2.1.4 Motorola 68K 专用的选项
................................................................................
39
2.1.5 MIPS 专用的选项
..................................................................................................
39
2.2 环境
...................................................................................................................................
40
3 链接器脚本
...................................................................................................................................
40
3.1 基本的脚本概念
...............................................................................................................
40
3.2 脚本格式
...........................................................................................................................
41
3.3 简单例子
...........................................................................................................................
41
3.4 简单的命令
.......................................................................................................................
42
3.4.1 设置入口点
............................................................................................................
43
3.4.2 处理文件的命令
....................................................................................................
43
3.4.3 处理对象(object)文件格式的命令
.....................................................................
44
3.4.4 为存储区指定别名
................................................................................................
45
3.4.5 杂项命令
................................................................................................................
48
3.5 符号赋值
...........................................................................................................................
50
3.5.1 简单赋值
................................................................................................................
50
3.5.2 HIDDEN
.................................................................................................................
51
3.5.3 PROVIDE
...............................................................................................................
51
3.5.4 PROVIDE_HIDDEN
.............................................................................................
52
3.5.5 源代码引用
............................................................................................................
52
3.6 分区命令
...........................................................................................................................
53
3.6.1 输出分区的描述
....................................................................................................
53
3.6.2 输出分区名称
........................................................................................................
54
3.6.3 输出分区地址
........................................................................................................
54
3.6.4 输入分区的描述
....................................................................................................
55
3.6.5 输出分区数据
........................................................................................................
60
3.6.6 输出分区关键字
....................................................................................................
60
3.6.7 输出分区的丢弃
....................................................................................................
61
3.6.8 输出分区属性
........................................................................................................
62
3.6.9 重叠描述
................................................................................................................
65
3.7 存储命令
...........................................................................................................................
66
3.8 PHDRS 命令
.....................................................................................................................
68
3.9 Version 命令
.....................................................................................................................
70
3.10 表达式
.............................................................................................................................
72
3.10.1 常量
.....................................................................................................................
73
3.10.2 符号常量
.............................................................................................................
73
3.10.3 符号名称
.............................................................................................................
73
3.10.4 孤立分区
.............................................................................................................
74
3.10.5 位置计数器
.........................................................................................................
74
3.10.6 操作符
.................................................................................................................
76
3.10.7 求值
.....................................................................................................................
77
3.10.8 表达式的分区
.....................................................................................................
77
3.10.9 内置函数
.............................................................................................................
79
3.11 隐式的链接器脚本
.........................................................................................................
82
4 机器的不同特性
..........................................................................................................................
82
5 BFD
................................................................................................................................................
83
5.1 如何工作的: BFD 概述
....................................................................................................
83
5.1.1 BFD 信息丢失
........................................................................................................
83
5.1.2 BFD 规范对象文件格式
........................................................................................
84
6 附录 A:MRI 兼容脚本文件
......................................................................................................
85
1 概述
LD(GNU Linker)将一些 object 文件和 archive 文件(可以理解为多个 object 文件组
合出来的文档文件)打包,重新布置这些文件中的数据,整理里面引用的符号。一般情况下,
编译程序最后一步就是运行 LD。
LD 接受链接器命令语言文件来清晰完整地控制整个链接过程,这个文件使用的语言语
法包含 AT&T 的链接编辑命令语言语法。
此版本的 LD 使用一般用途的 BFD 库来操作 object 文件。这允许 ld 以多种不同的格
式读取、组合以及写入 object 文件。例如,COFF 或者 a.out。为了产生各种有效类型的
object 文件,可以将各种不同格式的文件链接到一起。
除了它的灵活性,GNU 链接器比其它链接器还能提供最能帮助诊断的信息。很多其它
链接器遇到一个错误后会立即放弃执行;只要可能,LD 会继续执行,允许你识别出其它错
误(或者,有些情况下,尽管有错误发生,仍然可以输出目标文件)。
2 调用
GNU 链接器 LD 意图处理非常复杂而广泛的情况,而且希望尽可能与其它链接器兼容。
这样的结果就是,你可以有很多种选择来控制它的行为。
2.1命令行选项
链接器支持非常多的命令行选项,可事实上只有很少的一部分在实际应用中被用到。例
如,LD 频繁用于在标准的支持 Unix 的系统中链接标准 Unix object 文件。在这种系统中,
要链接 hello.o 文件:
ld -o
output
/lib/crt0.o hello.o -lc
这条命令告诉 LD 产生一个名叫 output 的文件,output 文件是由/lib/crt0.o、hello.o,
以及 libc.a 链接而成,libc.a 在标准搜索目录中(可以参考下面的’-l’选项的说明)。
给 ld 的一些命令行选项可能会放置在命令行中的任何位置。然而,指向文件的那些选
项,例如’-l’,’-T’等,会在此选项出现的位置触发文件的读操作,涉及 object 文件和
其它文件选项。用不同的参数重复那些非文件的选项没有任何影响,也不会覆盖命令行左侧
出现过的选项参数。对于多次指定同一个参数却有意义的情况,我们下面介绍。
无选项的参数(没有‘-’开头)是 object 文件或者 archive 文件,这些文件是用来链
接到一起的。这些可能在其它命令行选项的前边、中间或者后边,但是,它们不能放在选项
和这个选项所对应的参数之间。
通常调用链接器时,至少要指定一个 object 文件,但是你可以使用’-l’或’-R’指
定其它格式的二进制输入文件,以及指定脚本命令语言的文件。如果根本没有指定二进制的
文件,链接器就不会产生输出文件,并且会提示‘No input files’的消息。
如果链接器无法识别一个 object 文件的格式,它会假定这个文件是链接脚本。以这种
方式指定的链接脚本会添加在链接时使用的主链接脚本后(主脚本或许是默认的链接脚本,
又或者是通过’-T’用户指定的那个脚本)。这个特性允许链接器处理这样一些这样的文件,
这些文件从命令行看起来是 object 文件或者是 archive 文件但却只是定义了一些符号的值,
或者使用 INPUT、GROUP 加载其它 object 文件。通过这种方式指定的脚本只是主链接脚
本的补充,这些脚本文件中的附加命令会放置在主脚本文件之后;使用’-T’选项才能完全
的替换默认链接脚本,但需要注意 INSERT 命令的影响。可参考后边的 链接器脚本 章节。
对于一个字母的那些选项,参数必须要紧跟其后(可以有空格,也可以没有空格)。
对于多个字母的那些选项,前边一个横线和两个横线是一样的;例如,’-trace-symbol’
和‘--trace-symbol’是等效的。注意,有一个例外:以小写的’o’开头的多字母选项前
必须使用双横线。这是为了区分’-o’选项的。所以,例如’-omagic’是指设置输出文件
名称为 magic,而’--omagic’是指在输出时设置 NMAGIC 标志。
多字母的选项要么通过=连接参数,要么通过空格连接紧跟它的参数。例如:
‘--trace-symbol foo’ 和 ‘--trace-symbol=foo’是等效的。多字母选项名字的缩写
若是唯一的,也是被接受的。
注意:如果链接器是被间接调用的,例如通过编译器调用时(gcc),所有链接命令行选
项都要带’-Wl’前缀,(或者其它的适合特定编译器的前缀),就像下面的例子:
gcc -Wl,--start-group foo.o bar.o -Wl,--end-group
这是很重要的,否则编译器程序就会默默地丢掉这些链接选项,然后导致错误的链接。
由于选项与参数之间使用空格作为分隔符,让编译器传递带值的链接命令仍然会造成混乱,
因为编译器会只把选项传递给链接器,而参数传递给编译器。这种情况下,最简单的方式就
是使用单字母和多字母选项的连接格式(不用空格的格式),就像:
gcc foo.o bar.o -Wl,-eENTRY -Wl,-Map=a.map
以下是 GNU 链接器能够识别的命令行选项(开关)表:
@
file
从 file 指定的文件中读取命令行选项。读出的选项被插入到@file 所在的位置。如
果文件不存在或者不能读取,此选项也不会被移除,只是无效而已。
在 file 中的选项以空格分隔。在一个选项中若含有空格,必须要将整个选项包含在
单引号或者双引号之间。任何字符(包括’\’)都能被包含进来,当然有些字符自
被加上’\’的前缀。File 指定的文件中还可以包含另外的@file 选项;这些选项将
会被递归式的处理。
-a
keyword
这一选项用来支持对 HP/UX 的兼容。Keyword 参数必须是’archive’、’shared’、
或者’default’之一。’-aarchive’从功能上等同于’-Bstatic’,另外的两个 keywords
从功能上等同于’-Bdynamic’.这个选项可以被多次用到。
--audit
AUDITLIB
添加 AUDITLIB 到动态分区的 DT_AUDIT 条目。不用检查 AUDITLIB 是否存在,也
不会使用在库中指定的 DT_SONAME。如果多次指定,DT_AUDIT 会包含要使用的
剩余86页未读,继续阅读
leonkim
- 粉丝: 0
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- stc12c5a60s2 例程
- Android通过全局变量传递数据
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论10