2011-09-29 125 views
1

我想將OpenCV用作靜態庫。將庫編譯爲靜態庫後,現在我正在測試一些示例以查看所有依賴關係。OpenCV靜態鏈接錯誤

的依賴添加到編譯爲-static pkg配置--libs OpenCV的-lpthread -ljpeg -ltiff -lz -ljasper -lpng12

但得到以下錯誤消息:

g++ -c -g -Wall -O2 `pkg-config --cflags opencv` formas.cpp 
g++ -g -Wall -O2 `pkg-config --cflags opencv` formas.o -o paint -static `pkg-config --libs opencv` -lpthread -ljpeg -ltiff -lz -ljasper -lpng12 
/usr/local/lib/libopencv_core.a(system.o): In function `cv::tempfile(char const*)': 
system.cpp:(.text._ZN2cv8tempfileEPKc+0x3a): warning: the use of `tmpnam' is dangerous, better use `mkstemp' 
/usr/local/lib/libopencv_core.a(system.o): In function `cv::getTickCount()': 
system.cpp:(.text._ZN2cv12getTickCountEv+0x2a): undefined reference to `clock_gettime' 
/usr/local/lib/libopencv_highgui.a(grfmt_png.o): In function `cv::PngDecoder::readHeader()': 
grfmt_png.cpp:(.text._ZN2cv10PngDecoder10readHeaderEv+0xde): undefined reference to `png_set_longjmp_fn' 
/usr/local/lib/libopencv_highgui.a(grfmt_png.o): In function `cv::PngEncoder::write(cv::Mat const&, std::vector<int, std::allocator<int> > const&)': 
grfmt_png.cpp:(.text._ZN2cv10PngEncoder5writeERKNS_3MatERKSt6vectorIiSaIiEE+0x134): undefined reference to `png_set_longjmp_fn' 
/usr/local/lib/libopencv_highgui.a(grfmt_png.o): In function `cv::PngDecoder::readData(cv::Mat&)': 
grfmt_png.cpp:(.text._ZN2cv10PngDecoder8readDataERNS_3MatE+0x141): undefined reference to `png_set_longjmp_fn' 
collect2: ld returned 1 exit status 
make: *** [all] Error 1 

我做了一些錯誤或出現一個錯誤OpenCV庫。

OpenCV版本:2.3.1(最新版本) formas - >創建圖像並繪製一些圖形並保存到文件中的示例。很簡單。

在此先感謝。

+0

Ostia,estoy buscando exactamente lo mismo y soymañotambién:P – Wiliam

回答

4

看來你已經編譯OpenCV的libpng一起1.4或更新版本,但試圖與libpng的1.2

你使用什麼樣的cmake命令配置OpenCV的鏈接?

更新:

您需要添加-lrt到您鏈接的clock_gettime函數庫列表。