2013-11-28 3 views
18

Я загрузил boost 1.55 и MinGW. Консоль отвечает мне, что у меня нет никакой команды. Я не могу понять, как связать 2 пути и активировать gcc-компилятор. P.S. Если я построю boost с Microsoft Compiler, у меня будет около 8 ошибок с ошибкой 3861!
Как его построить?Как построить boost 1.55 с MINGW?

+1

См. Также http://stackoverflow.com/q/13256788/1390430 – Ben

ответ

31

Сначала убедитесь, что ваш каталог bin вашего mingw находится в вашей среде PATH, поэтому gcc и g++ могут быть вызваны из командной строки. Затем перейдите в корневой каталог вашего boost, где вы извлекли файлы.

Следуйте за этим бутстрапом + b2.exe для сборки. Например, допустим, вы хотите только скомпилировать регулярную часть boost. Команды последующие должны сделать трюк:

bootstrap mingw 
b2 toolset=gcc regex 

Вы можете использовать:

b2 --show-libraries 

, чтобы получить список модулей, которые вы можете построить в индивидуальном порядке. Конечно, вы можете построить все из них просто:

b2 toolset=gcc 

Заканчивать Boost Invocation подробный список доступных опций.

+6

Мне пришлось использовать 'bootstrap gcc' –

+3

@ChrisChiasson То же самое здесь. bootstrap mingw или bootstrap.bat mingw представили ошибки для меня. Только bootstrap gcc заставил его работать (с несколькими предупреждениями). Впоследствии я сделал b2 toolset = gcc, чтобы он создавал двоичные файлы из источника для ~ 15 минут, и я был хорош. Вам просто нужны эти 2 команды с Boost версии 1.62.0 –

+0

@ RestlessC0bra это работает для меня спасибо. Использование версии boost_1_63_0. Я добавляю, что я нашел в файле project-config.jam это «using msvc;» Я был смущен, будет ли b2 использовать msvc для компиляции источников, однако, определяя toolset = gcc, все работает отлично, а boost скомпилируется с gcc из mingw. – stviper

19

Ответ Greatwolf не работал для меня, так вот как мне удалось заставить его работать.

Во-первых, убедитесь, что MinGW\bin на вашем пути

Перейти к tools\build\v2 директории папку повышающего. Например, в моем случае это было C:\Boost\boost_1_55_0\tools\build\v2. Затем запустите

bootstrap mingw 

После этого, перейдите в корневой каталог бустера (эта часть имеет важное значение, так как b2 обнаруживает, что строить на основе текущего каталога)

Теперь, если вы хотите построить Filesystem, сделать

tools\build\v2\b2 toolset=gcc --build-type=complete stage --with-filesystem 

Это положит libboost_filesystem-mgw48-d-1_55.dll и т. Д. В stage\lib. Если вы хотите все построить, просто оставьте часть --with-filesystem.

+0

Спасибо, ваш комментарий действительно помог мне! – Salgat

4

Я смог построить его в соответствии с инструкциями от Сурьмы. Однако я первоначально получил эту ошибку:

Bootstrapping the build engine 
\Windows was unexpected at this time. 

Ошибка была решена путем очистки переменной PATH и ввод только папку MinGW в нем:

set PATH=C:\MinGW\bin 

Тогда инструкции Сурьма в сделал свою работу для меня. Благодаря!!

Только две другие мелочи, которые могут быть полезны. BOOST для MinGW следует строить из оболочки Windows, а не из оболочки MSYS. А в версии 1.57 скрипт bootstrap.bat больше не находится в инструментах \ build \ v2, а непосредственно в tools \ build.

4

Если вы установили MinGW/GCC как часть TDM-GCC, у вас будет «Командная строка MinGW», которую вы можете запустить. Это загружает окно командной строки и помещает компилятор GCC в PATH для этого окна. (Подобно «Командной подсказке разработчика», установленной с Visual Studio.)

Я думаю, что the "MinGW distro" также поставляется с одним.

Если у вас есть встроенный командной строки вы можете просто:

  • Запуск "MinGW Командная строка"
  • Перейти в папку бустера (например, C:/Boost)
  • Run bootstrap gcc
  • Пробег b2 toolset=gcc (или что-то еще команда, в которой вы нуждаетесь)

Если вы работаете с примерами, когда кто-то явно не устанавливает набор инструментов, вам нужно будет добавить toolset=gcc. Обратите внимание, что toolset должно быть помещено в имущество позиция не опция или команда позиция. От b2 --help:

b2 [options] [properties] [install|stage] 

Так что, если кто-то писал команду для вызова команды install с опцией --prefix, они бы написать:

b2 --prefix=C:\boost-build install 

И вы бы переписать его как :

b2 --prefix=C:\boost-build toolset=gcc install 

Для получения более подробной информации см. b2 --help.

Смежные вопросы