簡體   English   中英

構建用於靜態鏈接的Boost(MinGW)

[英]Building Boost for static linking (MinGW)

我正在使用bjam為MinGW構建Boost(我正在使用System和FileSystem):

bjam --toolset=gcc stage

它構建良好,但我希望能夠靜態鏈接到它(我必須有一個文件的最終產品)所以我試過:

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

但我得到了相同的輸出。 有任何想法嗎?

連續編輯第二個問題我在發帖后回答了幾個問題:p猜我會把這個問題留給其他人。

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

肯定會建立動態和靜態。

我認為link是一個屬性,而不是bjam的選項。 這意味着應該沒有 - 在它之前。

這是我的命令行,只用於構建靜態庫(盡管可視化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的屬性和選項的更多信息。

只是想要注意,隨着更新的提升(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

我沒有在MinGW中自己構建這個,但我相信你的第一個構建將輸出動態和靜態庫以及第二個靜態庫,所以如果你沒有在構建之間清理構建目錄,它可能看起來一樣。

當你寫“我必須有一個文件......”你是否意味着你需要一個包含所有boost庫的庫? 如果是這樣的話,我懷疑你可能不得不自己“聯合”他們。

我使用以下命令行來構建boost的靜態鏈接版本和動態鏈接版本:

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

這是通過Windows YMMV上的visual c ++完成的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM