compile opencv 3 on ubuntu 16.04 linking error: /usr/lib/x86_64-linux-gnu/libsoxr.so.0: undefined reference to `GOMP_parallel@GOMP_4.0'
compiler-errors, opencv3.1, ubuntu-16.04
Solution
Firstly, I thought this problem was caused because I installed Anaconda and put it into my `PATH`.
Different GCC version are used between Anaconda and System default. For Ubuntu 16.04, the GCC version is 5.4.0 however Anaconda only provides GCC 4 (I can't remember it's 4.4 or 4.8). Although I used the system default gcc to compile opencv, it somehow will find the lib located in Anaconda, which caused the problem.
I think there are two ways to solve this issue.
- Method 1: Pass the option `-D WITH_OPENMP=ON`, or, when using cmake-gui, check the choice `WITH-OPENMP`.
- Method 2: Delete Anaconda from your `$PATH` and `LD_LIBRARY_PATH`.
Problem
Trying to install openCV 3.1, CUDA 8.0.44 on Ubuntu 16.04 by building from the source. The following are the errors I met during the compilation. ``` Scanning dependencies of target opencv_test_video [ 37%] Building CXX object modules/video/CMakeFiles/opencv_test_video.dir/test/test_optflowpyrlk.cpp.o [ 37%] Building CXX object modules/video/CMakeFiles/opencv_test_video.dir/test/test_accum.cpp.o [ 37%] Building CXX object modules/video/CMakeFiles/opencv_test_video.dir/test/test_kalman.cpp.o [ 38%] Building CXX object modules/video/CMakeFiles/opencv_test_video.dir/test/test_ecc.cpp.o [ 38%] Building CXX object modules/video/CMakeFiles/opencv_test_video.dir/test/test_tvl1optflow.cpp.o [ 38%] Building CXX object modules/video/CMakeFiles/opencv_test_video.dir/test/test_main.cpp.o [ 38%] Building CXX object modules/video/CMakeFiles/opencv_test_video.dir/test/test_camshift.cpp.o [ 38%] Building CXX object modules/video/CMakeFiles/opencv_test_video.dir/test/ocl/test_optflowpyrlk.cpp.o [ 38%] Building CXX object modules/video/CMakeFiles/opencv_test_video.dir/test/ocl/test_optflow_farneback.cpp.o [ 38%] Building CXX object modules/video/CMakeFiles/opencv_test_video.dir/test/ocl/test_bgfg_mog2.cpp.o [ 38%] Building CXX object modules/video/CMakeFiles/opencv_test_video.dir/test/ocl/test_optflow_tvl1flow.cpp.o [ 38%] Building CXX object modules/video/CMakeFiles/opencv_test_video.dir/test/test_estimaterigid.cpp.o [ 38%] Linking CXX executable ../../bin/opencv_test_video //usr/lib/x86_64-linux-gnu/libsoxr.so.0: undefined reference to `GOMP_parallel@GOMP_4.0' collect2: error: ld returned 1 exit status modules/video/CMakeFiles/opencv_test_video.dir/build.make:391: recipe for target 'bin/opencv_test_video' failed make[2]: *** [bin/opencv_test_video] Error 1 CMakeFiles/Makefile2:3336: recipe for target 'modules/video/CMakeFiles/opencv_test_video.dir/all' failed make[1]: *** [modules/video/CMakeFiles/opencv_test_video.dir/all] Error 2 Makefile:160: recipe for target 'all' failed make: *** [all] Error 2 ``` I consider the issue is related to the openMP or the ld configuration. The following are the detailed configuration: - LD_LIBRARY_PATH: `/usr/lib/nvidia-current:/usr/local/cuda/lib64:/usr/local/cuda/lib` GCC version: 5.4.0 CMake configuration command: `cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D WITH_V4L=ON -D WITH_QT=ON -D WITH_OPENGL=ON -D WITH_CUBLAS=ON -DCUDA_NVCC_FLAGS="-D_FORCE_INLINES" ..`