之前在網上也下過一些別人編譯好的boost動態庫或者靜態庫檔案,發現都不是很好用,因此決定自己重新編譯。
解壓,得到boost庫的源**,得到boost_1_65_1檔案。
首先需要安裝gcc編譯器,因為我在windows系統上已經安裝了帶有mingw(gcc的windwos版本)qt環境,所以不需要再安裝mingw,只需要再windwos的環境變數中新增gcc.exe可執行檔案的環境變數,這樣在任何目錄下都可以使用gcc命令。新增環境變數的具體操作這裡不再介紹。
配置好環境變數之後,win+r->輸出cmd,以管理員身份開啟windows 的命令列介面,然後進入boost_1_65_1檔案的目錄,然後執行bootstrap.bat命令,等待一分鐘左右就會生成兩個可執行檔案,bjam.exe和b2.exe;
在命令列,執行下面的編譯命令bjam.exe –build-type=complete toolset=gcc stage variant=release link=shared threading=multi runtime-link=shared
大概1個小時左右,將在stage資料夾中生成動態庫檔案,其中.a檔案為鏈結庫的檔案,.dll檔案為執行的時候的動態庫檔案。檔案命令說明,例如:
libboost_system-mgw53-mt-1_65_1.dll和libboost_system-mgw53-mt-1_65_1.a檔案
mgw53:編譯器的版本mingw5.3版本;
mt:多執行緒的意思multithreaded;
1_65_1:boost的版本號。
建立qt工程鏈結庫,在.pro檔案新增
includepath += "e:\zhangbo
\boost_net\boost_1_65_1"
libs += -le:\zhangbo
\boost_net\boost_1_65_1\stage
\lib -lboost_filesystem-mgw53-mt-1_65_1 \
-lboost_system-mgw53-mt-1_65_1
main.cpp檔案
#include
#include
#include
#include
#include
#include
void testbesse()
void testfilesystem()
}int main(int argc, char *argv)
第一次的編譯指令是
bjam.exe –build-type=complete toolset=gcc stage
鏈結boost庫執行的程式的時候出現「duplicate section」錯誤
下面的回答說是編譯的問題,但也沒講清楚到底是什麼編譯問題。
我檢視了bjam –help可以看到bjam的一些編譯選項,然後指定了具體的編譯選項。bjam -show-libraries會列出所有要編譯的庫。
我將原來編譯的檔案刪除了,然後修改用下面的指令重新編譯了一次boost庫
bjam.exe –build-type=complete toolset=gcc stage variant=release link=shared threading=multi runtime-link=shared
再次鏈結的時候發現沒有問題了,可以確定是編譯的問題,至於到底是什麼問題還沒弄清楚
參考:
[1]
MySql在windwos下的安裝
配置以下的.ini mysqld 設定3306埠 port 3306 設定mysql的安裝目錄 basedir d tool mysql 5.7.29 winx64 設定mysql資料庫的資料的存放目錄 datadir d mysql 允許最大連線數 max connections 200 允許連線...
gcc在window系統環境下的安裝
mingw是指只用自由軟體來生成純粹的win32可執行檔案的編譯環境,它是minimalist gnu on windows的略稱。以上是介紹,在這篇博文中,博主還詳細介紹了環境變數的設定方法,感興趣的可參照原文設定 1 sourceforge 2 官網 3 可以自行去度娘上面找 可能需要翻牆,也沒...
在Linux情況下用gcc寫程式
測試下linux是否裝有gcc。輸入gcc 如果存在它會提示 no input files 不存在則提示gcc not found 沒安裝的,又不會安裝的,可以參考我的另一篇經驗 教你怎麼在linux上安裝gcc 首先touch helloworld.c 新建乙個helloworld.c檔案。vim...