Скомпилируйте C++ как 64-битный с помощью CLion

У меня есть приложение С++, которое запускает алгоритм потребления памяти.

Он вылетает с ошибкой: вызывается завершение после создания экземпляра 'std::bad_alloc' после того, как выделенная память достигает около 2 ГБ.

Я хочу скомпилировать его как 64-битный, чтобы он мог выделить больше памяти из моей машины с 64-битной / 8 ГБ оперативной памяти.

Как это можно сделать?

Я работаю с CLion, собираю с помощью CMake и использую версию mingw: mingw-w64\i686-4.8.3-posix-dwarf-rt_v3-rev2 кстати - wingw установлен под C:\Program Files (x86)\mingw-w64 это связано с проблема?

Я искал здесь: Обнаружение 64-битной компиляции в C и (что неудивительно) я видно, что в моем приложении нет __x86_64__


person yossico    schedule 25.11.2015    source источник
comment
Разве -m64 не помогает?   -  person SergeyA    schedule 25.11.2015
comment
ммм не знаю куда деть?   -  person yossico    schedule 25.11.2015
comment
В качестве аргумента для строки вызова вашего компилятора. Где-то в определениях CMake.   -  person SergeyA    schedule 25.11.2015
comment
Я проверю это примерно через час и скажу вам   -  person yossico    schedule 25.11.2015
comment
Если вы можете скомпилировать и запустить свое приложение в какой-либо системе POSIX, попробуйте использовать valgrind. У вас может быть утечка памяти. Если возможно, скомпилируйте его с помощью GCC 5 и использовать некоторые параметры -fsanitize= на этапе отладки (в дополнение к -Wall -Wextra -g)   -  person Basile Starynkevitch    schedule 25.11.2015
comment
@SergeyA, ты прав, это сработало! «-m64» сделал свое дело, теперь я обнаружил, что мне нужно изменить набор инструментов с i686 на x86_64. Спасибо!   -  person yossico    schedule 26.11.2015
comment
@BasileStarynkevitch спасибо за совет, я проверю. Я ожидал огромного потребления памяти, так как я работаю над алгоритмом, который строит ОГРОМНЫЙ граф с миллиардами узлов.   -  person yossico    schedule 26.11.2015
comment
@SergeyA, ты хочешь опубликовать свой ответ, чтобы я его принял?   -  person yossico    schedule 03.12.2015


Ответы (2)


Как предложил OP, опубликовав мой комментарий в качестве ответа: для этого вам нужно передать параметр -m64 компилятору/компоновщику.

person SergeyA    schedule 03.12.2015

Вы должны указать CLion использовать MinGW-w64 для сборки вашего проекта CMake.

Вам не нужно менять конфигурацию проекта CMake. Было бы контрпродуктивно ограничивать проект CMake фиксированной архитектурой компьютера, если вместо этого вы можете легко указать компилятору, для какой архитектуры строить, или использовать соответствующий компилятор (MinGW-w64).

В этом посте показано, как это сделать:

https://dev.my-gate.net/2014/09/15/how-to-use-mingw-w64-with-clion/

Выдержка из этого поста:

Вот несколько шагов, чтобы заставить его работать:

  1. Установите компилятор MinGW-w64 где-нибудь.
  2. Создайте файл с путем [MinGW-w64 dir]/include/_mingw.h и содержимым, показанным ниже.
  3. Укажите CLion на ваш [каталог MinGW-w64] и посмотрите, как CLion распознает вашу установку MinGW. Изображение скриншота из этого поста

После создания исполняемого файла вы можете проверить его архитектуру с помощью команды unix file, которая должна быть вам доступна, поскольку вы используете mingw.

person MarkusAtCvlabDotDe    schedule 25.11.2015
comment
Не могли бы вы опубликовать соответствующий контент из этого блога в своем ответе на случай, если блог исчезнет? - person John Drouhard; 25.11.2015