ld 命令

分类:常用对照表
ld 命令是二进制工具集 GNU Binutils 的一员,是 GNU 链接器,用于将目标文件与库链接为可执行程序或库文件。

ld 命令说明及用法

返回常用 Linux 命令

说明

ld 命令是二进制工具集 GNU Binutils 的一员,是 GNU 链接器,用于将目标文件与库链接为可执行程序或库文件。

语法

ld [选项] [目标文件...]

选项

-b:				指定目标代码输入文件的格式
-Bstatic:			只使用静态库
-Bdynamic:			只使用动态库
-Bsymbolic:			把引用捆绑到共享库中的全局符号
-c:				从指定的命令文件读取命令
--cref:				创建跨引用表
-d:				设置空格给通用符号,即使指定了可重定位输出
-defsym:			在输出文件中创建指定的全局符号
-demangle:			在错误消息中还原符号名称
-e:				使用指定的符号作为程序的初始执行点
-E:				对于 ELF 格式文件,把所有符号添加到动态符号表
-f:				对于 ELF 格式共享对象,设置 DT_AUXILIARY 名称
-F:				对于 ELF 格式共享对象,设置 DT_FILTER 名称
-format:			指定目标代码输入文件的格式 (和 -b 相同)
-g:				被忽略。用于提供和其他工具的兼容性
-h:				对于 ELF 格式共享对象,设置 DT_SONAME 名称
-i:				执行增量连接
-l:				把指定的存档文件添加到要连接的文件清单
-L:				把指定的路径添加添加到搜索库的目录清单
-M:				显示连接映射,用于诊断目的
-Map:				创建指定的文件来包含连接映射
-m:				模拟指定的连接器
-N:				指定读取/写入文本和数据段
-n:				设置文本段为只读
-noinhibit-exec:		生成输出文件,即使出现非致命连接错误
-no-keep-memory:		为内存使用优化连接
-no-warn-mismatch:		允许连接不匹配的目标文件
-O:				生成优化了的输出文件
-o:				指定输出文件的名称
-oformat:			指定输出文件的二进制格式
-R:				从指定的文件读取符号名称和地址
-r:				生成可重定位的输出(称为部分连接)
-rpath:				把指定的目录添加到运行时库搜索路径
-rpath-link:			指定搜索运行时共享库的目录
-S:				忽略来自输出文件的调试器符号信息
-s:				忽略来自输出文件的所有符号信息
-shared:			创建共享库
-sort-common:			在输出文件中不按照长度对符号进行排序
-split-by-reloc:		按照指定的长度在输出文件中创建额外的段
-split-by-file:			为每个目标文件在输出文件中创建额外的段
--section-start:		在输出文件中指定的地址定位指定的段
-T:				指定命令文件 (和 -c 相同)
-Ttext:				使用指定的地址作为文本段的起始点
-Tdata:				使用指定的地址作为数据段的起始点
-Tbss:				使用指定的地址作为 bss 段的起始点
-t:				在处理输入文件时显示它们的名称
-u:				强制指定符号在输出文件中作为未定义符号
-warn-common:			当一个通用符号和另一个通用符号结合时发出警告
-warn-constructors:		如果没有使用任何全局构造器,则发出警告
-warn-once:			对于每个未定义的符号只发出一次警告
-warn-section-align:		如果为了对齐而改动了输出段地址,则发出警告
--whole-archive:		对于指定的存档文件,在存档中包含所有文件
-X:				删除所有本地临时符号
-x:				删除所有本地符号

参数

目标文件:指定需要连接的目标文件

实例

链接目标文件生成可执行文件。给定 C++ 目标文件 test.omain.o,生成可执行文件 mylib.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 mylib.o -o test.out