1. 程式人生 > >在ubuntu與qtcreator中,如何將.a檔案與.so檔案存放在工程目錄下並進行第三方庫的連結

在ubuntu與qtcreator中,如何將.a檔案與.so檔案存放在工程目錄下並進行第三方庫的連結

目錄

背景:

執行環境:

3.連結庫

背景:

由於專案要在不同的計算機(Ubuntu系統)之間進行遷移,專案所依賴的第三方庫(包括動態連結庫以及靜態連結庫)在其他的計算機上並不一定存在,因此,打算將第三方庫放入專案的工程目錄下,在專案連結第三方庫時,使用工程目錄下的第三方庫。

執行環境:

Ubuntu 16.04 LTS,Qt5.10.1,C++

獲取第三方庫的檔案

1.可以從網上找資源下載(官網,論壇等等,建議官網)

2.從ubuntu系統中獲取

.a檔案與.so檔案一般在"usr/lib/x86_64-linux-gnu"目錄下。.h檔案一般在“usr/include”目錄下。

.a檔案,是LINUX系統中的靜態連結庫檔案。

從Ubuntu系統中獲取.so檔案與.a檔案

1.在"usr/lib/x86_64-linux-gnu"目錄找到.so與.a檔案

此處顯示在本機libtiff庫的.so與.a檔案,如下所示

ubuntu系統下的libtiff檔案

2.libxx.so檔案與libxx.so.x.x.x檔案的區別與聯絡 

目錄"usr/lib/x86_64-linux-gnu"中libtiff庫相關的有libtiff.so和libtiff.so.5.2.4.這兩個檔案的區別與聯絡如下圖所示。

libtiff.so與libtiff.so.x.x

1..so或者.so.x.x.x有可能是“共享庫”,也有可能是“到共享庫的連結”。

2.真正系統中需要的是“共享庫”,不需要“到共享庫的連結”。

3..so檔案與.so.x.x.x檔案可以重新命名,比如.so.x.x.x可以重名為.so檔案。

4.qtcreator中開啟專案,連結庫時,只能選擇.so檔案或者.a檔案,不能選擇.so.x.x.x檔案

3.對於2中第四點的示例(連結庫時,只能選擇.so檔案或者.a檔案):

1.首先工程目錄下的libs目錄下的檔案如下圖所示:

這裡的.so.x.x.x都是“共享庫”檔案。

只有.so.x.x

2.在qtcreator中,專案連結外部庫時,出現下圖的情況:只有.a檔案

刪除.so檔案

3.將工程目錄下的libs目錄下的檔案中的".so.x.x.x”重新命名為".so”(注意:此處的.so.x.x.x為“共享庫”型別)

將.so.x.x.x重新命名為.so檔案

4.在qtcreator中,專案連結外部庫時,出現下圖的情況:有.a檔案和.so檔案可以選擇進行連結。(注意:因為.so.x.x.x為“共享庫”型別,而.so由.so.x.x.x重新命名而來,因此此處的.so檔案為“共享庫”型別)

更改之後

連結第三方庫步驟:

1.將第三方庫的.h檔案放入include資料夾

注意:放入哪個資料夾都無所謂,只要在專案中進行連結時,選擇.h檔案所在目錄即可。但建議放入include資料夾。

專案的include資料夾:

include目錄下檔案

2.將第三方庫的.so檔案以及.a檔案放入libs資料夾。

注意:放入哪個資料夾都無所謂,只要在專案中進行連結時,選擇.h檔案所在目錄即可。但建議放入libs資料夾。

要確保.so檔案是“共享庫”檔案,或者如果是“到共享庫的連結”的話,確保能夠連結到某個共享庫檔案。這裡最好是選擇使.so檔案為“共享庫”檔案。

專案的libs資料夾:

專案工程目錄下的libs目錄

3.連結庫

在qt creator中開啟專案,選擇專案->新增庫->外部庫->庫檔案,選擇libs資料夾路徑->包含路徑,選擇include資料夾路徑->確定