Как мне скомпилировать 64-битную программу с gcc/g++ в 64-битной Linux?

Я использую Ubuntu 10.04 LTS и хочу, чтобы программа работала на большом сервере Debian с 300 ГБ памяти. С командой:

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 программа может быть скомпилирована, но будет сталкиваться с проблемой "ошибка сегментации" всякий раз, когда использование ОЗУ превышает 2,5 ГБ.

Или компиляция по умолчанию будет 64-битной? Как мне узнать, является ли процесс 32-битным или 64-битным в топе?

2 ответа

glibc-devel пакет должен быть правильным, однако обязательно используйте пакет архива x86_64.

В моей федоре, 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

Похоже, вам не хватает glibc-devel пакет, который несет gnu/stubs-64.h, Пытаться:

sudo apt-get install glibc-devel
Другие вопросы по тегам