使用 ld 命令链接 64 位非 SMP 对象文件
本部分描述了使用 ld 命令在 64 位环境中链接非 SMP 对象文件的准则。
要使用 ld 命令在 64 位环境中链接非 SMP 对象文件,请遵循以下准则:
- 请勿使用 -e 标志来更改可执行输出文件 (
__start) 的缺省起始点。 如果使用其他起点,您的结果将不可预测。 - 使用 ld 命令指定以下选项和文件:
- 在 AIX® 7.1 TL4 及更高版本上, -bh:4, -bpT:0x100000000, -bpD:0x110000000和 -b64
- 包含系统启动例程的对象文件:
- 未进行概要分析的程序的 crt0_64.o 。
- mcrt0_64.o (对于使用 -p 选项进行概要分析的程序)。
- gcrt0_64.o (对于使用 -pg 选项进行概要分析的程序)。
- 与 /usr/lib中的启动文件链接。
- 编译器和系统库:
- -lxlf90, -lm和 -lc 按该顺序。
- 如果使用 -qautodbl 选项,请指定 -qautodbl中列出的一些额外库。
- 如果使用 -qhot=vector 子选项,请指定 -lxlopt。
例如,要在 AIX 7.2上链接对象文件
file1.o 和 file2.o ,可以指定以下内容: ld -bh:4 -bpT:0x100000000 -bpD:0x110000000 -b64 /lib/crt0_64.o -lxlf90 -lm
-lc file1.o file2.o配置文件 /opt/IBM/openxlf/17.1.1/etc/xlf.cfg.72 列出了这些缺省库和链接程序选项。 通过使用 -# 选项进行样本编译,您可以完全了解编译器将如何运行链接程序。
请参阅 AIX Commands Reference , Volumes 1-6 以获取链接程序选项的描述。