编译opencv 3上ubuntu 16.04链接错误:/usr/lib/x86_64-linux-gnu/libsoxr.so.0:未定义的引用`GOMP_parallel@GOMP_4.0' [英] 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'
问题描述
尝试通过从源代码安装在Ubuntu 16.04上安装openCV 3.1,CUDA 8.0.44。
Trying to install openCV 3.1, CUDA 8.0.44 on Ubuntu 16.04 by building from the source.
以下是编译期间遇到的错误。 p>
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
与openMP或ld配置相关。
I consider the issue is related to the openMP or the ld configuration.
以下是详细配置:
- LD_LIBRARY_PATH:
/ usr / lib / nvidia-current:/ usr / local / cuda / lib64:/ usr / local / cuda / lib
-
GCC版本:5.4.0
GCC version: 5.4.0
CMake配置命令:
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..
推荐答案
首先,我认为这个问题是由于我安装Anaconda并把它放进我的 PATH
。
Firstly, I thought this problem was caused because I installed Anaconda and put it into my PATH
.
Anaconda和系统默认值之间使用不同的GCC版本。对于Ubuntu 16.04,GCC版本是5.4.0,但Anaconda只提供GCC 4(我不记得它是4.4或4.8)。虽然我使用系统默认gcc来编译opencv,它会以某种方式找到位于Anaconda的lib,这导致了问题。
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.
- 方法1:使用cmake-gui并检查
WITH-OPENMP $ c $ c>
- 方法2:从
$ PATH
和删除Anaconda
。
- Method 1: Use the cmake-gui and check the choice
WITH-OPENMP
. - Method 2: Delete Anaconda from your
$PATH
andLD_LIBRARY_PATH
.
这篇关于编译opencv 3上ubuntu 16.04链接错误:/usr/lib/x86_64-linux-gnu/libsoxr.so.0:未定义的引用`GOMP_parallel@GOMP_4.0'的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!