如何在 64 位计算机上将C++程序编译为 64 位

How to compile a C++ program as 64-bit on 64-bit machine?

本文关键字:C++ 程序 编译 计算机      更新时间:2023-10-16

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

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

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

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

当我能够强制 -m64 时,我得到"您选择的 CPU 不支持 x86-64 指令集"。有什么线索吗?uname -a 给出x86_64

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

如果您无法删除它(请更加努力!),则在命令行上在其后添加-march=x86-64将指定通用的 64 位 CPU 类型。

如果您尝试构建的软件是基于自动化工具的,这应该可以解决问题:

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

或者,对于一个简单的 Makefile:

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

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

add_compile_options(-m64)