Ошибка статического связывания OpenCV - PullRequest
1 голос
/ 30 сентября 2011

Я хочу использовать OpenCV в качестве статической библиотеки.После компиляции библиотеки как статической библиотеки я сейчас тестирую несколько примеров, чтобы увидеть все зависимости.

Зависимости, добавленные для компиляции: -static pkg-config --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 (последняя версия) форматы -> пример, который создает изображение, рисует несколько фигур и сохраняет их в файл.Так просто.

Заранее спасибо.

1 Ответ

4 голосов
/ 30 сентября 2011

Кажется, вы скомпилировали OpenCV с libpng 1.4 или новее, но пытаетесь связать с libpng 1.2

Какую команду cmake вы использовали для настройки OpenCV?

Обновление:

Вам необходимо добавить -lrt в список библиотек, на которые вы ссылаетесь для функции clock_gettime.

...