GCC可以为AIX进行交叉编译吗?

我'm trying to build GCC as a cross-compiler for AIX; the host and the build platforms are Linux x86_64, the target is powerpc-aix5.2.0. I'设法用本机AIX 6.1头文件(来自/ usr / include)和libs(只有/usr/lib/{crt0.o,crt0_64.o,libc.a)交叉编译Binutils 2.20.1和GCC 4.4.7 . ,libc_r.a,libpthreads.a的}) . 然后gcc正确地将简单的C代码(例如"Hello, world!")交叉构建为独立的可执行文件,但它拒绝交叉构建共享对象:

collect2:在object <在交叉编译的libgcc_s.a>的路径中找到的init函数

我尝试使用最新版本的Binutils 2.26,结果相同 .

然后我发现了以下comment

Binutils已更新为支持AIX 4.3.3,但尚未针对AIX 5进行维护,改进或更新 . 它可以执行简单的操作,但不完全支持更高级的功能 . 例如,共享对象创建的某些方面并不完整 .

所以我尝试使用target = powerpc-aix4.3.0重新构建上面的工具链(这次唯一的区别是我使用--disable-multilib配置GCC以避免错误"Unrecognized opcode: `fmsub'") . 我尝试了Binutils 2.20.1和Binutils 2.26,但我仍然在对象libgcc_s.a中找到了错误的init函数 .

现在我想知道是否有适用于交叉编译的AIX版本,尤其是 . 共享对象,由GCC和Binutils支持 .

回答(1)

2 years ago

你的问题的答案是“不” . 正如评论所说,链接器(ld)的GCC版本并不适用于AIX . 我在AIX上编译的所有开源代码都使用GCC但我使用的是本机ld命令 .