如何在64位机器上将C ++程序编译为64位?

时间:2012-06-18 07:58:58

标签: c++ compilation makefile g++ 64-bit

也许是一个非常微不足道的问题:

我需要将程序编译为64位(编写早期的makefile以将其编译为32位)。

我看到选项-m32出现在每个文件编译的命令行参数中。所以,我修改了makefile以摆脱OPTFLAG中的-m32,但是当程序编译时,我仍然看到-m32出现,二进制文件仍然是32位。这个m32也来自其他地方吗?

3 个答案:

答案 0 :(得分:18)

-m32只能来自你的文件中的某个地方,你必须追踪它(使用递归的grep)并将其删除。

  

当我能够强制-m64时,我得到“你选择的CPU不支持x86-64指令集”。任何线索? uname -a给出x86_64

该错误意味着makefile中有一个类似-march=i686的选项,对于64位编译无效,请尝试删除它。

如果你不能删除它(更加努力!),那么在命令行后面添加-march=x86-64将指定一个通用的64位CPU类型。

答案 1 :(得分:5)

如果您尝试构建的软件是基于autotools的,那么这应该可以解决问题:

./configure "CFLAGS=-m64" "CXXFLAGS=-m64" "LDFLAGS=-m64" && make

或者,对于一个普通的Makefile:

env CFLAGS=-m64 CXXFLAGS=-m64 LDFLAGS=-m64 make

答案 2 :(得分:0)

如果您使用的是cmake,则可以通过以下方式添加m64编译选项:

add_compile_options(-m64)