我在我的 x86 32 位 linux 系统上构建了 GCC 4.7。当我尝试使用 -m64 标志进行交叉编译时,我得到以下信息:
抱歉,未实现:64 位模式未编译
而我的 Linux 发行版默认提供的编译器可以与 -m64 进行交叉编译。
我必须将什么传递给 ./configure 才能在 GCC 中启用 64 位模式?这些是我用来构建 GCC 4.7 的选项:
$ /usr/local/bin/g++ -v Using built-in specs.
COLLECT_GCC=/usr/local/bin/g++
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/i686-pc-linux-gnu/4.7.0/lto-wrapper
Target: i686-pc-linux-gnu
Configured with: ./configure --enable-multiarch --with-cloog=/usr/local/ --with-mpfr=/usr/local/ --with-ppl=/usr/local/ --verbose --enable-languages=c,c++
Thread model: posix gcc version 4.7.0 20120113 (experimental) (GCC)
编辑:
–enable-multilib 和 –enable-targets=i686-pc-linux-gnu,x86_64-pc-linux-gnu
不要改变现状。编译器仍然抱怨未编译的 64 位模式:
$ g++ -v 使用内置规范。 COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/i686-pc-linux-gnu/4.7.0/lto-wrapper 目标:i686-pc-linux-gnu 配置:./configure –enable-multiarch - -with-cloog=/usr/local/ –with-mpfr=/usr/local/ –with-ppl=/usr/local/ –verbose –enable-languages=c,c++ –enable-multilib - -enable-targets=i686-pc-linux-gnu,x86_64-pc-linux-gnu 线程模型:posix gcc version 4.7.0 20120113 (experimental) (GCC)
$ g++ -m64 c.cpp c.cpp:1:0: 抱歉,未实现:64 位模式未编译
原文由 Martin 发布,翻译遵循 CC BY-SA 4.0 许可协议
您将需要 binutils 和 gcc 配置:
并且可能:
支持 multilib(
-m64
和/或-m32
选项)。您还需要两个版本的东西,例如 glibc 才能链接和运行生成的二进制文件。