web-dev-qa-db-ja.com

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ビットでしょうか?プロセスが「トップ」で32ビットか64ビットかを確認するにはどうすればよいですか?

2
Mike Wong

glibc-develパッケージは正しいはずですが、必ずx86_64Archパッケージを使用してください。

私の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
1
AcridBrimistic

glibc-develを運ぶgnu/stubs-64.hパッケージが不足しているようです。試してみてください:

Sudo apt-get install glibc-devel
0
tonioc