Всем привет.
Помогите разобраться, почему не собирается туториал по OpenCV:
http://docs.opencv.org/2.4/doc/tutorials/introduction/linux_gcc_cmake/linux_gcc_cmake.html#linux-gcc-usageУ меня p8 (обновленный c p7).
Установил пакеты:
- libopencv2.4
- libopencv2.4-doc
- libopencv2.4-examples
- libopencv2.4-utils
- libopencv-devel
В ходе туториала создал файлы:
DisplayImage.cpp
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
using namespace cv;
using std::cout;
using std::endl;
int main(int argc, char **argv) {
if (argc != 2) {
cout << "Usage: DisplayImage.out <Image_Path>" << endl;
return -1;
}
Mat image;
image = imread(argv[1], 1);
if (!image.data) {
cout << "No image data" << endl;
}
namedWindow("Display Image", WINDOW_AUTOSIZE);
imshow("Display Image", image);
waitKey(0);
return 0;
}
CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
project( DisplayImage )
find_package(OpenCV REQUIRED)
add_executable( ${PROJECT_NAME} DisplayImage.cpp )
target_link_libraries( ${PROJECT_NAME} ${OpenCV_LIBS} )
В консоли набираю:
cmake .
make
Появляются ошибки:
CMakeFiles/DisplayImage.dir/DisplayImage.cpp.o: In function `main':
DisplayImage.cpp:(.text+0xa4): undefined reference to `cv::imread(std::string const&, int)'
DisplayImage.cpp:(.text+0x144): undefined reference to `cv::namedWindow(std::string const&, int)'
DisplayImage.cpp:(.text+0x1b5): undefined reference to `cv::imshow(std::string const&, cv::_InputArray const&)'
collect2: error: ld returned 1 exit status
make[2]: *** [DisplayImage] Ошибка 1
make[1]: *** [CMakeFiles/DisplayImage.dir/all] Ошибка 2
make: *** [all] Ошибка 2
Если набрать make VERBOSE=1, то видим:
make: *** [all] Ошибка 2
[jetbird@comp-core-i5-4210u-715a66 opencv-test]$ make VERBOSE=1
/usr/bin/cmake -H/home/jetbird/workspace/opencv-test -B/home/jetbird/workspace/opencv-test --check-build-system CMakeFiles/Makefile.cmake 0
/usr/bin/cmake -E cmake_progress_start /home/jetbird/workspace/opencv-test/CMakeFiles /home/jetbird/workspace/opencv-test/CMakeFiles/progress.marks
make -f CMakeFiles/Makefile2 all
make[1]: Вход в каталог `/home/jetbird/workspace/opencv-test'
make -f CMakeFiles/DisplayImage.dir/build.make CMakeFiles/DisplayImage.dir/depend
make[2]: Вход в каталог `/home/jetbird/workspace/opencv-test'
cd /home/jetbird/workspace/opencv-test && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /home/jetbird/workspace/opencv-test /home/jetbird/workspace/opencv-test /home/jetbird/workspace/opencv-test /home/jetbird/workspace/opencv-test /home/jetbird/workspace/opencv-test/CMakeFiles/DisplayImage.dir/DependInfo.cmake --color=
make[2]: Выход из каталога `/home/jetbird/workspace/opencv-test'
make -f CMakeFiles/DisplayImage.dir/build.make CMakeFiles/DisplayImage.dir/build
make[2]: Вход в каталог `/home/jetbird/workspace/opencv-test'
Linking CXX executable DisplayImage
/usr/bin/cmake -E cmake_link_script CMakeFiles/DisplayImage.dir/link.txt --verbose=1
/usr/bin/c++ CMakeFiles/DisplayImage.dir/DisplayImage.cpp.o -o DisplayImage -rdynamic /usr/lib64/libopencv_videostab.so.2.4.9 /usr/lib64/libopencv_superres.so.2.4.9 /usr/lib64/libopencv_stitching.so.2.4.9 /usr/lib64/libopencv_contrib.so.2.4.9 /usr/lib64/libopencv_nonfree.so.2.4.9 /usr/lib64/libopencv_ocl.so.2.4.9 /usr/lib64/libopencv_gpu.so.2.4.9 /usr/lib64/libopencv_photo.so.2.4.9 /usr/lib64/libopencv_objdetect.so.2.4.9 /usr/lib64/libopencv_legacy.so.2.4.9 /usr/lib64/libopencv_video.so.2.4.9 /usr/lib64/libopencv_ml.so.2.4.9 /usr/lib64/libopencv_calib3d.so.2.4.9 /usr/lib64/libopencv_features2d.so.2.4.9 /usr/lib64/libopencv_highgui.so.2.4.9 /usr/lib64/libopencv_imgproc.so.2.4.9 /usr/lib64/libopencv_flann.so.2.4.9 /usr/lib64/libopencv_core.so.2.4.9
CMakeFiles/DisplayImage.dir/DisplayImage.cpp.o: In function `main':
DisplayImage.cpp:(.text+0xa4): undefined reference to `cv::imread(std::string const&, int)'
DisplayImage.cpp:(.text+0x144): undefined reference to `cv::namedWindow(std::string const&, int)'
DisplayImage.cpp:(.text+0x1b5): undefined reference to `cv::imshow(std::string const&, cv::_InputArray const&)'
collect2: error: ld returned 1 exit status
make[2]: *** [DisplayImage] Ошибка 1
make[2]: Выход из каталога `/home/jetbird/workspace/opencv-test'
make[1]: *** [CMakeFiles/DisplayImage.dir/all] Ошибка 2
make[1]: Выход из каталога `/home/jetbird/workspace/opencv-test'
make: *** [all] Ошибка 2
[jetbird@comp-core-i5-4210u-715a66 opencv-test]$
Вроде как компилятор видит библиотеки, и они там лежат, и даже символы в них есть, а линковать отказывается. При этом примеры из пакета libopencv2.4-examples запускаются.
В чем может быть дело?