在windwos環境下用gcc編譯boost動態庫

2021-08-13 09:48:28 字數 1770 閱讀 5532

之前在網上也下過一些別人編譯好的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...