OpenCV静态链接错误

OpenCV静态链接错误,opencv,static-libraries,Opencv,Static Libraries,我想使用OpenCV作为静态库。在将库编译为静态库之后,我现在使用一些示例进行测试,以查看所有依赖项 添加到编译中的依赖项是-staticpkg config--libs opencv-lpthread-ljpeg-ltiff-lz-ljasper-lpng12 但获得以下错误消息: g++-c-g-Wall-O2`pkg配置--cflags opencv`formas.cpp g++-g-Wall-O2`pkg-config--cflags-opencv`formas.o-o-paint-st

我想使用OpenCV作为静态库。在将库编译为静态库之后,我现在使用一些示例进行测试,以查看所有依赖项

添加到编译中的依赖项是
-static
pkg config--libs opencv
-lpthread-ljpeg-ltiff-lz-ljasper-lpng12

但获得以下错误消息:

g++-c-g-Wall-O2`pkg配置--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):在函数“cv::tempfile(char const*)”中:
system.cpp:(.text._ZN2cv8tempfileEPKc+0x3a):警告:使用“tmpnam”是危险的,最好使用“mkstemp”
/usr/local/lib/libopencv_core.a(system.o):在函数'cv::getTickCount()'中:
system.cpp:(.text._ZN2cv12getTickCountEv+0x2a):未定义对“clock_gettime”的引用
/usr/local/lib/libopencv_highgui.a(grfmt_png.o):在函数'cv::PngDecoder::readHeader()'中:
grfmt_png.cpp:(.text._ZN2cv10PngDecoder10readHeaderEv+0xde):对“png_set_longjmp_fn”的未定义引用
/usr/local/lib/libopencv_highgui.a(grfmt_png.o):在函数“cv::PngEncoder::write(cv::Mat const&,std::vector const&)”中:
grfmt_png.cpp:(.text._ZN2cv10PngEncoder5writeERKNS_3materkst6vectorisaiee+0x134):对“png_set_longjmp_fn”的未定义引用
/usr/local/lib/libopencv_highgui.a(grfmt_png.o):在函数“cv::PngDecoder::readData(cv::Mat&)”中:
grfmt_png.cpp:(.text._ZN2cv10PngDecoder8readDataERNS_3MatE+0x141):对“png_set_longjmp_fn”的未定义引用
collect2:ld返回了1个退出状态
make:**[all]错误1
我做错了什么,或者OpenCV库中有错误

OpenCV版本:2.3.1(最新版本) formas-->创建图像、绘制一些图形并保存到文件的示例。这么简单


提前感谢。

您似乎已经使用libpng 1.4或更新版本编译了OpenCV,但正在尝试链接libpng 1.2

您使用了什么cmake命令来配置OpenCV

更新:


您需要将
-lrt
添加到您为
clock_gettime
函数链接的库列表中。

您似乎已使用libpng 1.4或更新版本编译OpenCV,但正在尝试链接libpng 1.2

您使用了什么cmake命令来配置OpenCV

更新:


您需要将
-lrt
添加到您链接的库列表中,以实现
时钟获取时间功能。

Ostia,estoy buscando Exactament lo mismo y soy maño también:POstia,estoy buscando Exactament lo mismo y soy maño también:p
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