链接共享库

本主题讨论如何链接共享库。

IBM®Open XL C/C++ for AIX®17.1.0 中, 选项 -shared 的功能等同于 随附的经典 -qmkshrobj IBMXL C/C++ for AIX16.1.0 选项。 如果在链接步骤上指定 -shared 选项,那么编译器将指示链接程序生成单个共享库文件,而不是所有输入文件的可执行文件。 输出文件的缺省名称为 a.out。 要重命名输出文件,请使用 -o file_name 选项。

IBMOpen XL C/C++ for AIX17.1.0 中,经典选项 的 -qtwolink 等价形式是 -bcdtors:csect。 然而, -bcdtors:csect使用 生成的代码可能 IBMOpen XL C/C++ for AIX17.1.0 无法与链接器正常配合工作,因为必要的符号可能会被丢弃。 若您在 或更早版本 16.1.0XL C/C++ for AIXIBM-qtwolink 使用 来最小化从库文件和对象文件包含的构造函数数量,建议您改用 -bcdtors:mbr IBMOpen XL C/C++ for AIX17.1.0。 使用 -bcdtors:mbr 选项,链接程序将废弃包含启动初始化但未被引用的库。 您还可以使用 -bcdtors 链接程序选项来指定生成的共享库的初始化优先级。 请参阅 AIX 文档中的 ld 命令 以获取更多详细信息。

可以将 -shared 选项与 -G 链接程序选项配合使用,以生成用于运行时链接程序的共享对象。

由于 -G 解释为 Clang 选项,因此必须以 -Wl,作为前缀。 请参阅以下示例:
ibm-clang++_r -shared -Wl,-G t.o -o shr.o