当前位置: 技术问答>linux和unix
请问一个关于命令ld的问题
来源: 互联网 发布时间:2017-03-26
本文导语: 命令ld可以带上参数-r,关于这个参数的一般解释如下: 生成可重定位输出 --- 就是说, 生成的 输出文件 能够 依次 成为 ld 的 输入, 一般 称之为 不完全(partial) 连接. 它 有 一个 副效应, 在 支持 标准 Un...
命令ld可以带上参数-r,关于这个参数的一般解释如下:
生成可重定位输出 --- 就是说, 生成的 输出文件 能够 依次 成为 ld 的 输入, 一般 称之为 不完全(partial) 连接. 它 有 一个 副效应, 在 支持 标准 Unix 幻数(magic number) 的 环境 中, 这个选项 把 输出文件 的 幻数 设置成 OMAGIC. 如果 没有 指定 这个选项, linker 生成 绝对定位 的 文件. 连接 C++ 程序时, 这个选项 不会 解析 出 对 构造子(constructor) 的 引用(reference); 不妨 改用 -Ur 选项. 这个选项 的 效果 和 -i 一样.
请问这段话具体应该如何解释?加上-r与不加-r具体会有什么样的区别?
谢谢!
生成可重定位输出 --- 就是说, 生成的 输出文件 能够 依次 成为 ld 的 输入, 一般 称之为 不完全(partial) 连接. 它 有 一个 副效应, 在 支持 标准 Unix 幻数(magic number) 的 环境 中, 这个选项 把 输出文件 的 幻数 设置成 OMAGIC. 如果 没有 指定 这个选项, linker 生成 绝对定位 的 文件. 连接 C++ 程序时, 这个选项 不会 解析 出 对 构造子(constructor) 的 引用(reference); 不妨 改用 -Ur 选项. 这个选项 的 效果 和 -i 一样.
请问这段话具体应该如何解释?加上-r与不加-r具体会有什么样的区别?
谢谢!
|
英文版的是不是更容易理解?
-r
--relocatable
Generate relocatable output---i.e., generate an output file that can in turn serve as input to ld. This is often called partial linking. As a side effect, in
environments that support standard Unix magic numbers, this option also sets the output file’s magic number to "OMAGIC". If this option is not specified, an absolute
file is produced. When linking C++ programs, this option will not resolve references to constructors; to do that, use -Ur.
When an input file does not have the same format as the output file, partial linking is only supported if that input file does not contain any relocations. Different
output formats can have further restrictions; for example some "a.out"-based formats do not support partial linking with input files in other formats at all.
This option does the same thing as -i.
-r
--relocatable
Generate relocatable output---i.e., generate an output file that can in turn serve as input to ld. This is often called partial linking. As a side effect, in
environments that support standard Unix magic numbers, this option also sets the output file’s magic number to "OMAGIC". If this option is not specified, an absolute
file is produced. When linking C++ programs, this option will not resolve references to constructors; to do that, use -Ur.
When an input file does not have the same format as the output file, partial linking is only supported if that input file does not contain any relocations. Different
output formats can have further restrictions; for example some "a.out"-based formats do not support partial linking with input files in other formats at all.
This option does the same thing as -i.