Подтвердить что ты не робот

Как скомпилировать С++-программу как 64-разрядную на 64-битной машине?

Возможно, очень тривиальный вопрос:

Мне нужно скомпилировать программу как 64-разрядную (ранее написанный файл makefile был скомпилирован как 32-разрядный).

Я видел параметр -m32, отображающийся в параметрах командной строки с каждой компиляцией файла. Итак, я модифицировал make файл, чтобы избавиться от -m32 в OPTFLAG, но опять же, когда программа компилируется, я все еще вижу, что -m32 появляется, а бинарные файлы все еще 32-разрядные. Выходит ли это m32 откуда-то еще?

4b9b3361

Ответ 1

-m32 может быть только откуда-то из ваших файлов, вам придется отследить его (используйте рекурсивный grep) и удалите его.

Когда я могу заставить -m64, я получаю "выбранный вами CPU не поддерживает набор инструкций x86-64". Любой ключ?. uname -a дает x86_64

Эта ошибка означает, что в make файлах есть опция типа -march=i686, которая недопустима для 64-разрядной компиляции, попробуйте также удалить ее.

Если вы не можете удалить его (повторите попытку!), добавив -march=x86-64 после него в командной строке укажите общий 64-разрядный тип ЦП.

Ответ 2

Если программное обеспечение, которое вы пытаетесь создать, основано на autotools, это должно сделать трюк:

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

Или для простого файла Makefile:

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