目錄
1.在"usr/lib/x86_64-linux-gnu"目錄找到.so與.a文件
2.libxx.so文件與libxx.so.x.x.x文件的區別與聯繫
3.對於2中第四點的示例(鏈接庫時,只能選擇.so文件或者.a文件):
背景:
由於項目要在不同的計算機(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文件,如下所示
2.libxx.so文件與libxx.so.x.x.x文件的區別與聯繫
目錄"usr/lib/x86_64-linux-gnu"中libtiff庫相關的有libtiff.so和libtiff.so.5.2.4.這兩個文件的區別與聯繫如下圖所示。
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都是“共享庫”文件。
2.在qtcreator中,項目鏈接外部庫時,出現下圖的情況:只有.a文件
3.將工程目錄下的libs目錄下的文件中的".so.x.x.x”重命名爲".so”(注意:此處的.so.x.x.x爲“共享庫”類型)
4.在qtcreator中,項目鏈接外部庫時,出現下圖的情況:有.a文件和.so文件可以選擇進行鏈接。(注意:因爲.so.x.x.x爲“共享庫”類型,而.so由.so.x.x.x重命名而來,因此此處的.so文件爲“共享庫”類型)
鏈接第三方庫步驟:
1.將第三方庫的.h文件放入include文件夾
注意:放入哪個文件夾都無所謂,只要在項目中進行鏈接時,選擇.h文件所在目錄即可。但建議放入include文件夾。
項目的include文件夾:
2.將第三方庫的.so文件以及.a文件放入libs文件夾。
注意:放入哪個文件夾都無所謂,只要在項目中進行鏈接時,選擇.h文件所在目錄即可。但建議放入libs文件夾。
要確保.so文件是“共享庫”文件,或者如果是“到共享庫的鏈接”的話,確保能夠鏈接到某個共享庫文件。這裏最好是選擇使.so文件爲“共享庫”文件。
項目的libs文件夾:
3.鏈接庫
在qt creator中打開項目,選擇項目->添加庫->外部庫->庫文件,選擇libs文件夾路徑->包含路徑,選擇include文件夾路徑->確定