构建用于静态链接的Boost(MinGW)

时间:2009-01-30 06:12:34

标签: c++ boost build linker bjam

我正在使用bjam为MinGW构建Boost(我正在使用System和FileSystem):

bjam --toolset=gcc stage

它构建良好,但我希望能够静态链接到它(我必须有一个文件用于最终产品)所以我尝试了:

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

但我得到了相同的输出。有什么想法吗?

编辑连续发表的第二个问题我在发帖后回答了几个问题:p猜我会把这个问题留给其他人了。

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

肯定会建立动态和静态。

4 个答案:

答案 0 :(得分:41)

我认为link是一个属性,而不是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的属性和选项的更多信息。

答案 1 :(得分:8)

请注意,随着更新的提升(2011年2月),您现在也需要构建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/boost-in-vista-using-mingw-and-cmdexe.html

答案 2 :(得分:0)

我自己没有在MinGW中构建这个,但我相信你的第一个构建将输出动态和静态库,第二个只输出静态库,所以如果你没有在构建之间清理构建目录,它可能看起来一样。

当您写“我必须有一个文件......”时,您是否意味着您需要一个包含所有增强库的库?如果是这样,我怀疑你可能不得不自己一起'''他们。

答案 3 :(得分:0)

我使用以下命令行来构建boost的静态链接版本和动态链接版本:

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

这是通过Windows YMMV上的visual c ++完成的。