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

时间:2016-03-05 11:21:09

标签: gcc cross-compiling aix

我试图将GCC构建为AIX的交叉编译器;主机和构建平台是Linux x86_64,目标是powerpc-aix5.2.0。我设法用本机AIX 6.1头文件(来自 / usr / include )和libs(只有 / usr / lib /)交叉编译Binutils 2.20.1和GCC 4.4.7。 {的crt0.o,crt0_64.o,的libc.a,libc_r.a,libpthreads.a的} 的)。然后gcc正确地将简单的C代码(例如" Hello,world!")交叉构建为独立的可执行文件,但它拒绝交叉构建共享对象:

  

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

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

然后我找到了以下comment

  

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

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

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

1 个答案:

答案 0 :(得分:3)

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