簡體   English   中英

使用MinGW和CodeBlocks安裝Boost庫

[英]Installing Boost libraries with MinGW and CodeBlocks

我正在第一時間使用Boost庫,我選擇了一個名叫Regex的漂亮女孩。

我已經在我的機器上安裝了庫(自動構建?),但是我收到了上述錯誤(找不到-lboost_regex )。 我正在使用Code :: Blocks with MinGW和C ++ 0X編譯器標志。

我有

  • 將“搜索目錄”指向安裝目錄
  • 向鏈接器添加了-lboost_regex標志

但沒有運氣。 有人可以幫我搞定嗎?


更新

現在好起來了。 對於這個問題的新手,我在下面的答案中添加了一些進一步的注釋。

(另外,改變了問題的標題,因為它比我剛開始時更廣泛。)

從我的第一次構建體驗開始,這里有一些可以幫助新手的鏈接和提示。 我直接從zip文件構建了庫。 我在MinGW上構建,我使用CodeBlocks作為IDE。

  1. 下載Boost zip,在某個地方解壓縮(我稱之為$boostdir
    • 拉鏈時相當大,> 300MB
  2. 將MinGW bin添加到PATH var
    • 當Boost構建時,它將需要訪問MinGW可執行文件
  3. 生成b2.exebjam.exe
    • Windows的文檔巧妙地假設MSVC編譯器可用。
    • 如果是,你可以像文檔說的那樣使用bootstrap.bat
    • 如果不是(像我的那樣),你必須自己構建exe文件,在第4步和第5步中。
  4. 在CMD中,導航到$boostdir/tools/build/v2/engine
  5. 運行build.bat mingw (將構建b2.exebjam.exe
  6. 現在你已經根據你的系統規格定制了b2bjam 導航回$boostdir並准備開始構建庫。
    • Boost將在當前目錄中創建一個新的bin.v2目錄。
    • 所有的lib都將進入bin.v2
    • 出於某種原因,這是一個“中間”目錄
    • 這一步沒什么可做的,只是一些額外的信息:)
  7. 運行b2 toolset=gcc --build-type=complete
    • 這需要很長時間,在1-2小時左右
    • 你會知道它是否有效。 如果你認為有些不對勁,那就不行了。
    • 構建可以使用各種標志

現在你們都建成了。 是時候設置CodeBlock了。

  1. 將編譯器指向頭文件
    • 右鍵單擊您的項目 - >構建選項 - >搜索目錄選項卡 - >編譯器選項卡 - >添加$boostdir地址
  2. Boost根據您當前的系統規范為您想要的庫構建了一個DLL。 查看$boostdirstage\\lib\\目錄
    • 此DLL稍后將在鏈接器中使用,因此請勿關閉其資源管理器窗口
    • 我在C:\\Program Files\\Boost_1_52\\stage\\lib\\libboost_regex-mgw44-1_52.dll
    • 我認為文檔有一個聰明的方法來做到這一點,但我還沒有嘗試過
    • 現在,構建完成后,可以刪除步驟#6中的“中間”目錄
  3. 將鏈接器指向該DLL的目錄
    • 右鍵單擊您的項目 - >構建選項 - >搜索目錄選項卡 - >鏈接器選項卡 - >添加該目錄地址( blah\\blah\\blah\\stage\\lib\\
  4. 將該DLL標志添加到鏈接器設置
    • 我的是-lboost_regex-mgw44-1_52
  5. 深呼吸,向你的上帝祈禱,並開始測試。

進一步的文檔可能會有所幫助或混淆:

Code :: Blocks網站有一個版本,直到我的搜索結束時才找到。 這很有幫助,但有一些奇怪的事情。 這篇文章也很有幫助。

祝好運!

我不確定你自動構建的是什么意思。 大多數Boost庫只是頭文件,但需要將一些文件(如正則表達式)編譯為共享/靜態庫。 編譯步驟不是自動的,您需要調用Boost構建系統( bjam )來執行此操作。 當然,有源(例如BoostPro)為各種平台分發預構建的Boost二進制文件。

完成后,您需要將庫所在的路徑添加到鏈接器的搜索路徑中。 對於MinGW,此選項為-L"path/to/library" Boost確實有指令允許自動鏈接所需的庫,這似乎與MSVC很好地工作,但我從來沒有讓它與MinGW一起工作。 因此,您還必須列出要明確鏈接的庫。 Boost庫默認包含文件名中的目標和版本信息,因此對於MinGW gcc 4.7和Boost 1.51,典型的鏈接器命令行選項看起來像-lboost_regex-mgw47-mt-1_51

暫無
暫無

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

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