執行環境 ubuntu 10.04.4 LTSkernel 2.6.32-38-generic
可由lsb_release -a 與 uname -r查看
 
pkg-config說明與用法
pkg-config可以查看安裝套件提供的資訊
例如版本資訊,或套件提供的library,hearderfile所在目錄等等

通常套件都會提供xxx.pc檔讓pkg-config得知資訊

預設.pc檔都會放到/usr/lib/pkgconfig/下
當然你也可以更改PKG_CONFIG_PATH讓pkg-config知道到哪裡可以找到.pc檔
例如: PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH 
透過echo  $PKG_CONFIG_PATH  查看是否有增加成功
 
pkg-config 可以由sudo apt-get install pkg-config 取得
有興趣的朋友安裝後可以使用pkg-config --help查看說明

我們就針對build較常使用到的選項
pkg-config --cflags opencv    //列出套件提供的headerfile dir 
pkg-config --libs opencv    //列出套建提供的lib
我的認知與man有點出入 大家可以都參考看看
http://linux.die.net/man/1/pkg-config 

 
透過編譯QtOpenCV file做說明;
當我要build qtopencv時,出現了找不到cv.h 和 highgui.h的error訊息
執行pkg-config --cflags opencv得知;-I/usr/local/include/opencv -I/usr/local/include
    修改Makefile:CFLAGS和CXXFLAGS標籤後增加 -I/usr/local/include/opencv -I/usr/local/include

這時已經找到include的headerfile
 ,但compile完.o要編譯為可執行檔時出現錯誤訊息
main.o: In function `main':
main.cpp:(.text+0x44): undefined reference to `cvCreateCameraCapture'......
未定義的參考就是有找到prototype但找不到實際程式碼就是lib
(節省篇幅) 

 執行pkg-config --libs opencv得知動態函式庫的位置; 

/usr/local/lib/libopencv_calib3d.so /usr/local/lib/libopencv_contrib.so /usr/local/lib/libopencv_core.so
/usr/local/lib/libopencv_features2d.so ..... 
(節省篇幅)
    修改Makefile: LIBS標籤後增加找到的全部路徑
重新make後成功的產生qtopencv執行檔

總結一下(以下取自黑手部落格)
使用方法很簡單
  • pkg-config --cflags library-name-with-version 就可以得到編譯程式時,pre-processing 動作必須加上的參數設定。例如:我在自己的電腦上下pkg-config --cflags glib-2.0,其結果為-I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include。
  • pkg-config --libs library-name-with-version就可以得到 linking 時所必須傳給編譯器的參數。執行 pkg-config --libs glib-2.0 得到-L/lib -lglib-2.0。
另外,我們還可以利用 pkg-config 來簡化 Makefile 的撰寫。在Makefile中,原來寫在編譯器之後的參數,改成 pkg-config --cflags --libs library-name-with-version 即可。例如:將Makefile中的這一行gcc -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -L/lib -lglib-2.0 program.c
替換成gcc pkg-config --cflags --libs glib-2.0 program.c
 或者可以在命令列直接執行gcc -o `pkg-config --cflags --libs glib-2.0` program program.c 

 



參考資料;
黑手blog http://yczhuang.blogspot.tw/2007/04/pkg-config.html
資策會-嵌入式作業系統時做 陳彥銘老師編
arrow
arrow
    全站熱搜

    viclin 發表在 痞客邦 留言(0) 人氣()