GCC:抱歉,未实现:64 位模式未编译

新手上路,请多包涵

我在我的 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 许可协议

阅读 925
2 个回答

您将需要 binutils 和 gcc 配置:

 --enable-multilib

并且可能:

 --enable-targets=i686-pc-linux-gnu,x86_64-pc-linux-gnu

支持 multilib( -m64 和/或 -m32 选项)。您还需要两个版本的东西,例如 glibc 才能链接和运行生成的二进制文件。

原文由 rubenvb 发布,翻译遵循 CC BY-SA 3.0 许可协议

我在 Windows 上遇到了同样的问题。尽管安装了 codeblock 20.03,但我无法编译我的 64 位代码。我通过将编译器设置为 x86_64-w64-mingw32-g++.exe 而不是 g++.exe 来解决它。它在 bin 目录中为 g++.exe。在 Windows 中,转到设置菜单并:设置->编译器…选择“工具链可执行文件”选项卡,然后从那里很明显。

原文由 Ehsan H 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题