使用 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.ofile2.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 以获取链接程序选项的描述。