gcc - GCC 可以在 AIX 上交叉编译吗?

标签 gcc cross-compiling aix

我正在尝试将 GCC 构建为 AIX 的交叉编译器;主机和构建平台是Linux x86_64,目标是powerpc-aix5.2.0。我已经成功地使用 native AIX 6.1 header (来自 /usr/include)和库(仅 /usr/lib/{crt0 .o、crt0_64.o、libc.a、libc_r.a、libpthreads.a})。然后 gcc 正确地将简单的 C 代码(例如“Hello,world!”)交叉构建为独立的可执行文件,但它拒绝交叉构建共享对象:

collect2: init function found in object < path to cross-compiled libgcc_s.a >

我尝试使用较新版本的 Binutils(最高 2.26),但结果相同。

然后我发现了以下comment :

Binutils was updated to support AIX 4.3.3, but has not been maintained, improved, or updated for AIX 5. It can do simple things, but does not fully support more advanced features. For instance, some aspects of shared object creation are not complete.

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

现在我想知道是否有一个 AIX 版本可以进行交叉编译,特别是。共享对象,受 GCC 和 Binutils 支持。

最佳答案

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

关于gcc - GCC 可以在 AIX 上交叉编译吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35813450/

相关文章:

C 编程基础知识 : Why can't I see the . o 使用 gcc 编译 .c 文件后的文件

java - 为旧版本的 Java 进行交叉编译时,在哪里可以找到 Bootstrap 类?

bash - 为什么我的 ~/.bashrc 是在我连接时获取的,而不是在我只执行命令时获取的?

c++ - Ubuntu桌面开发环境(GNU工具)

c - GCC/SDL2 无限期挂起并停止响应

c++ - 尝试使用 cmake 交叉编译 qt 应用程序时出现链接问题

linux - 我需要什么来调试 pthreads?

java - 使用 VisualVM 在 AIX 上分析 Java 进程

linux - 翻转粘贴命令输出

haskell - 无法在 Haskell 中链接 FFI 库