如何在 64 位 Linux 上使用 gcc/g++ 编译 64 位程序?

如何在 64 位 Linux 上使用 gcc/g++ 编译 64 位程序?

我正在使用 Ubuntu 10.04 LTS,并且想要制作一个可以在具有 300GB 内存的大型 Debian 服务器上运行的程序。使用命令:

g++ Encoder.cpp -std=c++0x -m64 -o Encoder.o

它返回类似

In files included from /usr/include/features.h:378,
                  from /usr/include/c++/4.4/i486-linux-gnu/64/bits/os_defines.h:39
                  from /usr/include/c++/4.4/i486-linux-gnu/64/bits/c++confige.h:243,
                  from /usr/include/c++/4.4/iostream:39,
                  from Encoder.cpp:1:
/usr/include/gnu/stubs.h:9:27: error: gnu/stubs-64.h: No such file or directory

但是如果没有 -m64 标志,该程序是可编译的,但只要 RAM 使用量超过 2.5GB 就会遇到“分段错误”问题。

或者实际上默认编译是 64 位?如何在“top”中判断进程是 32 位还是 64 位?

答案1

glibc-devel包应该是正确的,但是请确保使用 x86_64 arch 包。

在我的 Fedora 中,glibc-devel.x86_64是正确的包。

对于 ubuntu 来说,可能很简单glibc-dev.x86_64

尝试以下方法之一

sudo apt-get install glibc-devel.x86_64

sudo apt-get install glibc-dev.x86_64

答案2

看来您缺少glibc-devel携带 的包gnu/stubs-64.h。请尝试:

sudo apt-get install glibc-devel

相关内容