執行環境 ubuntu 10.04.4 LTS 與kernel 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執行檔
總結一下(以下取自黑手部落格)
使用方法很簡單
替換成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
資策會-嵌入式作業系統時做 陳彥銘老師編
可由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。
替換成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
資策會-嵌入式作業系統時做 陳彥銘老師編
全站熱搜
留言列表