【问题标题】:Can't cross-compile libstdc++ for AIX7.1无法为 AIX7.1 交叉编译 libstdc++
【发布时间】:2018-02-14 13:26:13
【问题描述】:

我正在尝试为 Power8 AIX7.1 交叉编译 gcc 4.8.2。成功编译 binutils、gcc 二进制文件和 libgcc 但无法编译 libstdc++。

我收到这样的错误:

checking whether the /home/zakkurasov/Sources/build-gcc/./gcc/xgcc -B/home/zakkurasov/Sources/build-gcc/./gcc/ -B/opt/aix/powerpc-ibm-aix7.1.0.0/bin/ -B/opt/aix/powerpc-ibm-aix7.1.0.0/lib/ -isystem /opt/aix/powerpc-ibm-aix7.1.0.0/include -isystem /opt/aix/powerpc-ibm-aix7.1.0.0/sys-include  -maix64 linker (/home/zakkurasov/Sources/build-gcc/./gcc/collect-ld) supports shared libraries... configure: error: Link tests are not allowed after GCC_NO_EXECUTABLES.
Makefile:10072: recipe for target 'configure-target-libstdc++-v3' failed
make: *** [configure-target-libstdc++-v3] Error 1

配置:

CC=gcc-5 CXX=g++-5 ../gcc-4.8.3/configure --target=$TARGET --prefix=$PREFIX --with-gnu-ld --with-gnu-as --with-sysroot=$SYSROOT --disable-libgcj --enable-languages=c,c++ --enable-version-specific-runtime-libs --disable-nls --with-cloog=no --with-ppl=no --disable-libstdcxx-pch --enable-__cxa_atexit

地点:

$PREFIX=/opt/aix
$TARGET=powerpc-ibm-aix7.1.0.0
$SYSROOT contains all libs and headers from AIX system

也收到这样的错误:

checking whether make sets $(MAKE)... yes
checking for powerpc-ibm-aix7.1.0.0-gcc... /home/zakkurasov/Sources/build-gcc/./gcc/xgcc -B/home/zakkurasov/Sources/build-gcc/./gcc/ -B/opt/aix/powerpc-ibm-aix7.1.0.0/bin/ -B/opt/aix/powerpc-ibm-aix7.1.0.0/lib/ -isystem /opt/aix/powerpc-ibm-aix7.1.0.0/include -isystem /opt/aix/powerpc-ibm-aix7.1.0.0/sys-include  -maix64
checking for C compiler default output file name... 
configure: error: in `/home/zakkurasov/Sources/build-gcc/powerpc-ibm-aix7.1.0.0/ppc64/libgomp':
configure: error: C compiler cannot create executables

【问题讨论】:

    标签: gcc g++ cross-compiling libstdc++


    【解决方案1】:

    GNU Binutils 在 AIX 6.1、AIX 7.1 和 AIX 7.2 上无法正常运行。它不会产生正确的共享对象。它还通过了 GCC 中的一些功能测试,但没有为 AIX 正确实现这些功能。

    您可以克服配置共享库测试,但您将无法创建工作的 GCC 交叉编译器。

    任何需要此功能的客户都应向其 IBM 销售代表表达他们的需求。

    【讨论】:

    • 非常有趣,因为我可以使用libc成功编译C程序,并且在AIX上运行良好。
    • 也许有什么建议可以让 C++ 交叉编译器正常工作?
    • 对于非常简单的功能,GNU Binutils 函数。它没有完全坏掉。但是,它不会为最近的 AIX 发行版生成有效的共享对象。它不正确地支持 AIX DWARF 调试。 GNU Binutils 对于链接现有库的简单程序来说已经足够好了。 GCC 及其运行时并不简单。
    • 交叉编译——字面意思是为 AIX 编译、创建汇编语言文件——应该可以工作。可以安装在 AIX 系统上构建的 GCC 运行时或从与 GNU Binutils 结合的预构建包中安装,并使用它来交叉编译将在 AIX 上运行的 C++ 应用程序。这与使用普通的 GCC 交叉工具方法将 GCC 构建为交叉编译器不同。
    • 所以我可以从 aix 获取库和包含,并将其与我的二进制文件一起使用?还是什么?
    猜你喜欢
    • 2021-02-10
    • 1970-01-01
    • 2019-05-07
    • 2019-01-18
    • 2020-08-28
    • 2016-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多