一、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命令的編譯選項,用於指明頭文件的位置