compiler errors - compilar opencv 3 en ubuntu 16.04 error de enlace:/usr/lib/x86_64-linux-gnu/libsoxr.so.0: referencia indefinida a `GOMP_parallel@GOMP_4.0 ''
compiler-errors ubuntu-16.04 (1)
En primer lugar, pensé que este problema fue causado porque instalé Anaconda y lo puse en mi PATH
.
Se usan diferentes versiones de GCC entre Anaconda y el sistema por defecto. Para Ubuntu 16.04, la versión de GCC es 5.4.0; sin embargo, Anaconda solo proporciona GCC 4 (no recuerdo que sea 4.4 o 4.8). Aunque usé el gcc predeterminado del sistema para compilar opencv, de alguna manera encontrará la lib ubicada en Anaconda, lo que causó el problema.
Creo que hay dos formas de resolver este problema.
- Método 1: Pase la opción
-D WITH_OPENMP=ON
, o, cuando use cmake-gui, marque la opciónWITH-OPENMP
. - Método 2: elimine Anaconda de
$PATH
yLD_LIBRARY_PATH
.
Intentando instalar openCV 3.1, CUDA 8.0.44 en Ubuntu 16.04 construyendo desde la fuente.
Los siguientes son los errores que conocí durante la compilación.
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
Considero que el problema está relacionado con la configuración de openMP o ld.
La siguiente es la configuración detallada:
- LD_LIBRARY_PATH:
/usr/lib/nvidia-current:/usr/local/cuda/lib64:/usr/local/cuda/lib
Versión de GCC: 5.4.0
Comando de configuración de CMake:
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" ..