如何在 AIX 中使用 GCC 编译器链接 *.so 文件

Posted

技术标签:

【中文标题】如何在 AIX 中使用 GCC 编译器链接 *.so 文件【英文标题】:How to link *.so file in AIX with GCC compiler 【发布时间】:2016-12-26 14:54:02 【问题描述】:

我试图在 AIX 机器上使用 GCC 编译器编译 C 代码时链接 *.so 文件,但无法这样做。使用传统的-L-l 选项,分别用于路径和.so 库名称,给出“找不到错误”,设置LD_LIBRARY_PATH 也没有帮助。我了解 AIX 中的链接选项不同。但我无法理解正确的选项。

你能用例子回答我的问题吗?

【问题讨论】:

【参考方案1】:

使用选项-Wl,-brtl 可以使用*so* 共享对象。

编辑(第一个选项是-maix32-maix64,具体取决于上下文):

gcc -maix32 -o example -Wl,-brtl example.c /var/tmp/lib/librequired.so

gcc -maix32 -o example -Wl,-brtl example.c -L/var/tmp/lib -lrequired

【讨论】:

我使用了这个选项,但得到“不是 coff 文件”错误。假设我在路径“/var/tmp/lib”中有一个库文件“librequired.so”和一个带有“example.h”头文件的 C 文件“example.c”。现在你能告诉我什么是完整的 gcc 命令。谢谢 @Sandeep 那么它可能不是一个 coff 文件。 file /var/tmp/lib/librequired.so 说什么?

以上是关于如何在 AIX 中使用 GCC 编译器链接 *.so 文件的主要内容,如果未能解决你的问题,请参考以下文章

没有原型的静态函数(AIX 编译器允许,gcc 不允许)

AIX 的 XL 编译器的 -qfuncsect 选项的 gcc 等效选项是啥?

我们如何将 gcc-go 安装到 AIX 机器 power-pc-7 bigendian 64 位?

AIX 6.1 上的编译错误 - 未定义符号:.__gcc_qsub

在 AIX 7.1 上从源代码编译 Ruby

编译汇编链接加载