使用g++编译64位可执行文件

4

我在一个 Solaris 10 x86 机器上编译了 g++3.4.6。使用这个 g++,我尝试使用 -m64 选项构建 64 位二进制文件。

g++ -m64 test.cpp -o test.exe

我在这方面没有遇到任何问题。然后我将整个gcc安装目录复制到另一台相同硬件和操作系统的solaris机器上(我们称之为机器2)。但是现在,如果我尝试构建64位二进制文件,我会得到以下错误。

test.cpp:1: sorry, unimplemented: 64-bit mode not compiled in

然而,当我在第二台机器上使用另一个可用的g ++编译器版本(3.4.3)构建64位二进制文件时,没有任何错误。这让我感到困惑:

  1. 如果这是g ++最初构建的问题,那为什么它在第一台机器上可以工作而在第二台机器上却不行?
  2. 如果这是机器的问题,那么为什么在第二台机器上,另一个版本的g ++编译器能够制作64位二进制文件?

我需要针对编译器重新构建或针对机器配置做些什么,以便在第二台机器上使用g ++3.4.6构建64位二进制文件?

1个回答

1

我认为您可能需要配置 gcc binutils,以具有以下选项:

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

也需要同时安装32位和64位版本的库,例如glibc(不确定最后一部分,但这是我的Linux系统设置方式,对于64位和32位编译似乎没问题。

这些帖子也值得一看(来自gcc帮助)

如果需要任何帮助,请随时与我联系,我会尽力提供帮助。

附录:

还发现了这些帖子,可能会有所帮助:在这里


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接