Building Boost для статического связывания (MinGW) - PullRequest
29 голосов
/ 30 января 2009

Я строю Boost (я использую System и FileSystem) для MinGW, используя bjam:

bjam --toolset=gcc stage

И он прекрасно работает, но я хочу иметь возможность статически ссылаться на него (у меня должен быть один файл для конечного продукта), поэтому я попытался:

bjam --link=static --toolset=gcc stage

Но я получаю тот же вывод. Есть идеи?

edit второй вопрос подряд Я отвечал через несколько минут после публикации: p Полагаю, я оставлю это здесь для других.

bjam --build-type=complete --toolset=gcc stage

Наверняка будет динамически и статично.

Ответы [ 4 ]

41 голосов
/ 30 января 2009

Я думаю, что ссылка - это свойство, а не опция для bjam. Это означает, что не должно быть - до этого.

Это моя командная строка для построения только статических библиотек (хотя Visual C ++):

bjam install --toolset=msvc variant=release link=static threading=multi runtime-link=static

Сопоставляя это с вашей исходной командой сборки, я бы сказал, что она должна выглядеть примерно так:

bjam --toolset=gcc link=static stage

или, возможно:

bjam stage --toolset=gcc link=static

Попробуйте запустить

bjam --help

для получения дополнительной информации о свойствах и опциях для bjam.

8 голосов
/ 16 февраля 2011

Хочу только отметить, что с более новым бустом (февраль 2011 г.) вам нужно и сейчас собирать bjam ... по некоторым причинам текущий загружаемый bjam не работает корректно.

Итак, сначала:

cd ...\boost_1_45_0\tools\build\v2\engine\src

build.bat mingw

Вам необходимо добавить bjam в PATH (из панели управления, а не только из командной строки cmd). Тогда

cd ...\boost_1_45_0\

bjam --build-type=complete --toolset=gcc stage

Моя установка - Vista, Boost 1.45, MinGW 4.5 и сборка из cmd.exe, а не msys.

http://code -slim-jim.blogspot.com / 2011/02 / импульс-в-Vista, используя MinGW--и-cmdexe.html

0 голосов
/ 30 января 2009

Я использую следующую командную строку для построения как статически связанных, так и динамически связанных версий boost:

bjam  "-sBUILD=debug release <runtime-link>static/dynamic <threading>multi" stage

Это делается с помощью Visual C ++ в Windows YMMV.

0 голосов
/ 30 января 2009

Я не собирал это сам в MinGW, но я полагаю, что ваша первая сборка будет выводить как динамические, так и статические библиотеки, а вторая - только статические, поэтому, если вы не очистили каталоги сборок между сборками, она, вероятно, будет выглядеть одинаково.

Когда вы пишете «У меня должен быть один файл ...», вы имеете в виду, что вам нужна одна библиотека, содержащая все библиотеки повышения? Если да, то я подозреваю, что вам, возможно, придется самим «собрать» их.

...