天天看點

關于第三方庫在Windows和Linux上的使用方法一、Windows上庫的使用二、Linux上庫的使用三、參考資料

一、Windows上庫的使用

在Windows上要想使用一個第三方庫,首先需要配置三個内容(以Visual Studio為例):

配置項 配置方法
動态連結庫(*.dll) 在path環境變量後追加動态連結的位置
靜态連結庫(*.lib)

                         VS->項目屬性->VC++目錄->庫目錄,在此添加上靜态庫的位置

                               VS->項目屬性->連結器->輸入,在此添加上所有庫的名字

頭檔案(*.h)  VS->項目屬性->VC++目錄->包含目錄,在此添加上所有頭檔案的位置
(可選項)程式資料庫檔案(*.pdb) 在編譯完庫之後,形成于dll同檔案夾處,無需額外操作,隻要存在即可

注:*.pdb檔案用于在調試時使用,可幫助使用者跟蹤到庫的源碼處。

        清了解決方案的時候*.pdb檔案會被清除掉。

二、Linux上庫的使用

當安裝一個庫時(例如從RPM,deb或其他二進制包管理系統),會包括一個字尾名為pc的檔案,它會放入某個檔案夾下(依賴于你的系統設定,其父檔案夾一般名為"pkgconfig")。

該*.pc可以幫助我們在編譯程式的時候自動協助查找頭檔案及庫檔案的位置,使用方式如下(以opencv為例):

g++ main.cpp -o main `pkg-config --cflags --libs opencv`

 其中:--cflags代指頭檔案的位置,--libs代指庫檔案的位置。

若有多個第三方需要添加使用的時候,可以直接加入即可(以png的庫為例):

g++ main.cpp -o main `pkg-config --cflags --libs opencv libpng`

 補充:

 1. pkg-config可單獨做指令使用,使用方式如下:

pkg-config --cflags --libs opencv          #此指令可幫助查詢是否有opencv.pc存在
           

2. 在使用上述指令的時候,pkg-config通過環境變量PKG_CONFIG_PATH來查詢opencv.pc的位置。若在opencv.pc存在的情況下,上述指令不可用,即可通過向/etc/bash.bashrc等啟動檔案中追加opencv.pc位置資訊的途徑,來幫助pkg-config指令功能的實作。格式如下:

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig    #請以自己系統中opencv.pc的實際位置為準
export PKG_CONFIG_PATH
           

或以指令的方式(重新開機後失效):

export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
           

3. 以下以linpng為例展示libpng.pc的檔案格式。從檔案中我們就可以看出pkg-config指令是怎麼一步步地找到庫檔案和頭檔案的位置的。

prefix=/usr
exec_prefix=${prefix}
libdir=${prefix}/lib/x86_64-linux-gnu
includedir=${prefix}/include/libpng12

Name: libpng
Description: Loads and saves PNG files
Version: 1.2.50
Libs: -L${libdir} -lpng12    #-L為gcc指令的編譯選項,用于指明靜态庫的位置
Libs.private: -lz -lm 
Cflags: -I${includedir}      #-I為gcc指令的編譯選項,用于指明頭檔案的位置
           

三、參考資料

1. pkg-config的一些用法

2. pkg-config 維基百科

3. linux上安裝libpng庫以及zlib庫

繼續閱讀