OpenCV 的测试工程使用cmake编译总是失败,错误如下:
$ cmake ..
-- The C compiler identification is GNU 4.4.7
-- The CXX compiler identification is GNU 4.4.7
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: /home/liyanjie-iri/develop/opencv/cvtColor/build
$ make
Scanning dependencies of target cvtColor
[ 50%] Building CXX object CMakeFiles/cvtColor.dir/main.cpp.o
[100%] Linking CXX executable cvtColor
/usr/local/lib/libopencv_core.so.3.1.0: undefined reference to `std::__detail::_List_node_base::_M_unhook()@GLIBCXX_3.4.15'
/usr/local/lib/libopencv_core.so.3.1.0: undefined reference to `std::__detail::_List_node_base::_M_hook(std::__detail::_List_node_base*)@GLIBCXX_3.4.15'
collect2: ld returned 1 exit status
make[2]: *** [cvtColor] Error 1
make[1]: *** [CMakeFiles/cvtColor.dir/all] Error 2
make: *** [all] Error 2
后来发现cmake输出了这两行话:
-- The C compiler identification is GNU 4.4.7
-- The CXX compiler identification is GNU 4.4.7
想起来我之前更新过g++,从原来的4.4.7升级为4.9.4,所以想着应该是c或c++编译器出问题了。而后,
我将/usr/bin/c++替换为/usr/local/bin/c++的软连接,再次cmake .. & make 成功。