Arch Linux: problems building opencv with cuda; libopencv_core.so.3.4.0: undefined reference to `cblas_dgemm'
Clash Royale CLAN TAG#URR8PPP
up vote
0
down vote
favorite
I am currently trying to build a version of opencv, featuring cuda, on my arch linux computer. For that, I use opencv-cuda-git as base version. Additionally, I modified the PKGBUILD and added additional flags to further adapt opencv to my system.
However, everytime I run the buildprocess (makepkg csri), it fails with following error message:
[ 16%] Building CXX object modules/hdf/CMakeFiles/example_hdf_create_groups.dir/samples/create_groups.cpp.o
cd /home/tobias/builds/opencv-cuda-git/src/opencv/build/modules/hdf && /usr/bin/cmake -E cmake_link_script CMakeFiles/example_hdf_create_groups.dir/link.txt --verbose=1
/bin/g++-6 -std=c++11 -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Winit-self -Wno-narrowing -Wno-delete-non-virtual-dtor -Wno-comment -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -ffast-math -ffunction-sections -fdata-sections -msse -msse2 -fvisibility=hidden -fvisibility-inlines-hidden -Wno-invalid-offsetof -O3 -DNDEBUG -DNDEBUG -Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now -Wl,--gc-sections -rdynamic CMakeFiles/example_hdf_create_groups.dir/samples/create_groups.cpp.o -o ../../bin/example_hdf_create_groups -L/opt/cuda/lib64 ../../lib/libopencv_hdf.so.3.4.0 ../../lib/libopencv_highgui.so.3.4.0 ../../lib/libopencv_videoio.so.3.4.0 ../../lib/libopencv_imgcodecs.so.3.4.0 ../../lib/libopencv_imgproc.so.3.4.0 ../../lib/libopencv_core.so.3.4.0 ../../lib/libopencv_cudev.so.3.4.0
../../lib/libopencv_core.so.3.4.0: undefined reference to `cblas_zgemm'
../../lib/libopencv_core.so.3.4.0: undefined reference to `cblas_sgemm'
../../lib/libopencv_core.so.3.4.0: undefined reference to `cblas_dgemm'
../../lib/libopencv_core.so.3.4.0: undefined reference to `cblas_cgemm'
make[2]: *** [modules/hdf/CMakeFiles/example_hdf_create_groups.dir/build.make:102: bin/example_hdf_create_groups] Error 1
make[2]: Leaving directory '/home/tobias/builds/opencv-cuda-git/src/opencv/build'
make[1]: *** [CMakeFiles/Makefile2:2523: modules/hdf/CMakeFiles/example_hdf_create_groups.dir/all] Error 2
make[1]: Leaving directory '/home/tobias/builds/opencv-cuda-git/src/opencv/build'
make: *** [Makefile:163: all] Error 2
My previous search suggested that this error might occur due to a linking error with cublas. Therefore I tried to add -L/opt/cuda/lib64 and -lcublas to CMAKE_CXX_FLAGS. That made no difference at all.
Suggestions by another blog contained using gcc-6 instead of g++-6. That however yields another error:
[ 16%] Linking CXX executable ../../bin/example_hdf_create_groups
cd /home/tobias/builds/opencv-cuda-git/src/opencv/build/modules/hdf && /usr/bin/cmake -E cmake_link_script CMakeFiles/example_hdf_create_groups.dir/link.txt --verbose=1
/bin/gcc-6 -std=c++11 -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Winit-self -Wno-narrowing -Wno-delete-non-virtual-dtor -Wno-comment -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -ffast-math -ffunction-sections -fdata-sections -msse -msse2 -fvisibility=hidden -fvisibility-inlines-hidden -Wno-invalid-offsetof -O3 -DNDEBUG -DNDEBUG -Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now -Wl,--gc-sections -rdynamic CMakeFiles/example_hdf_create_groups.dir/samples/create_groups.cpp.o -o ../../bin/example_hdf_create_groups -L/opt/cuda/lib64 ../../lib/libopencv_hdf.so.3.4.0 ../../lib/libopencv_highgui.so.3.4.0 ../../lib/libopencv_videoio.so.3.4.0 ../../lib/libopencv_imgcodecs.so.3.4.0 ../../lib/libopencv_imgproc.so.3.4.0 ../../lib/libopencv_core.so.3.4.0 ../../lib/libopencv_cudev.so.3.4.0
ld: CMakeFiles/example_hdf_create_groups.dir/samples/create_groups.cpp.o: undefined reference to symbol '_ZNSt8ios_base4InitD1Ev@@GLIBCXX_3.4'
/usr/lib/libstdc++.so.6: error adding symbols: DSO missing from command line
make[2]: *** [modules/hdf/CMakeFiles/example_hdf_create_groups.dir/build.make:102: bin/example_hdf_create_groups] Error 1
make[2]: Leaving directory '/home/tobias/builds/opencv-cuda-git/src/opencv/build'
make[1]: *** [CMakeFiles/Makefile2:2523: modules/hdf/CMakeFiles/example_hdf_create_groups.dir/all] Error 2
make[1]: Leaving directory '/home/tobias/builds/opencv-cuda-git/src/opencv/build'
make: *** [Makefile:163: all] Error 2
The whole output of the build process and the customized PKGBUILD file can be found here
Cuda version 9, output of nvidia-smi:
Sun Jan 14 14:44:13 2018
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 387.34 Driver Version: 387.34 | |-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce GTX 780 Ti Off | 00000000:01:00.0 N/A | N/A |
| 32% 27C P8 N/A / N/A | 624MiB / 3017MiB | N/A Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| 0 Not Supported |
+-----------------------------------------------------------------------------+
arch-linux compiling opencv
add a comment |Â
up vote
0
down vote
favorite
I am currently trying to build a version of opencv, featuring cuda, on my arch linux computer. For that, I use opencv-cuda-git as base version. Additionally, I modified the PKGBUILD and added additional flags to further adapt opencv to my system.
However, everytime I run the buildprocess (makepkg csri), it fails with following error message:
[ 16%] Building CXX object modules/hdf/CMakeFiles/example_hdf_create_groups.dir/samples/create_groups.cpp.o
cd /home/tobias/builds/opencv-cuda-git/src/opencv/build/modules/hdf && /usr/bin/cmake -E cmake_link_script CMakeFiles/example_hdf_create_groups.dir/link.txt --verbose=1
/bin/g++-6 -std=c++11 -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Winit-self -Wno-narrowing -Wno-delete-non-virtual-dtor -Wno-comment -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -ffast-math -ffunction-sections -fdata-sections -msse -msse2 -fvisibility=hidden -fvisibility-inlines-hidden -Wno-invalid-offsetof -O3 -DNDEBUG -DNDEBUG -Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now -Wl,--gc-sections -rdynamic CMakeFiles/example_hdf_create_groups.dir/samples/create_groups.cpp.o -o ../../bin/example_hdf_create_groups -L/opt/cuda/lib64 ../../lib/libopencv_hdf.so.3.4.0 ../../lib/libopencv_highgui.so.3.4.0 ../../lib/libopencv_videoio.so.3.4.0 ../../lib/libopencv_imgcodecs.so.3.4.0 ../../lib/libopencv_imgproc.so.3.4.0 ../../lib/libopencv_core.so.3.4.0 ../../lib/libopencv_cudev.so.3.4.0
../../lib/libopencv_core.so.3.4.0: undefined reference to `cblas_zgemm'
../../lib/libopencv_core.so.3.4.0: undefined reference to `cblas_sgemm'
../../lib/libopencv_core.so.3.4.0: undefined reference to `cblas_dgemm'
../../lib/libopencv_core.so.3.4.0: undefined reference to `cblas_cgemm'
make[2]: *** [modules/hdf/CMakeFiles/example_hdf_create_groups.dir/build.make:102: bin/example_hdf_create_groups] Error 1
make[2]: Leaving directory '/home/tobias/builds/opencv-cuda-git/src/opencv/build'
make[1]: *** [CMakeFiles/Makefile2:2523: modules/hdf/CMakeFiles/example_hdf_create_groups.dir/all] Error 2
make[1]: Leaving directory '/home/tobias/builds/opencv-cuda-git/src/opencv/build'
make: *** [Makefile:163: all] Error 2
My previous search suggested that this error might occur due to a linking error with cublas. Therefore I tried to add -L/opt/cuda/lib64 and -lcublas to CMAKE_CXX_FLAGS. That made no difference at all.
Suggestions by another blog contained using gcc-6 instead of g++-6. That however yields another error:
[ 16%] Linking CXX executable ../../bin/example_hdf_create_groups
cd /home/tobias/builds/opencv-cuda-git/src/opencv/build/modules/hdf && /usr/bin/cmake -E cmake_link_script CMakeFiles/example_hdf_create_groups.dir/link.txt --verbose=1
/bin/gcc-6 -std=c++11 -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Winit-self -Wno-narrowing -Wno-delete-non-virtual-dtor -Wno-comment -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -ffast-math -ffunction-sections -fdata-sections -msse -msse2 -fvisibility=hidden -fvisibility-inlines-hidden -Wno-invalid-offsetof -O3 -DNDEBUG -DNDEBUG -Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now -Wl,--gc-sections -rdynamic CMakeFiles/example_hdf_create_groups.dir/samples/create_groups.cpp.o -o ../../bin/example_hdf_create_groups -L/opt/cuda/lib64 ../../lib/libopencv_hdf.so.3.4.0 ../../lib/libopencv_highgui.so.3.4.0 ../../lib/libopencv_videoio.so.3.4.0 ../../lib/libopencv_imgcodecs.so.3.4.0 ../../lib/libopencv_imgproc.so.3.4.0 ../../lib/libopencv_core.so.3.4.0 ../../lib/libopencv_cudev.so.3.4.0
ld: CMakeFiles/example_hdf_create_groups.dir/samples/create_groups.cpp.o: undefined reference to symbol '_ZNSt8ios_base4InitD1Ev@@GLIBCXX_3.4'
/usr/lib/libstdc++.so.6: error adding symbols: DSO missing from command line
make[2]: *** [modules/hdf/CMakeFiles/example_hdf_create_groups.dir/build.make:102: bin/example_hdf_create_groups] Error 1
make[2]: Leaving directory '/home/tobias/builds/opencv-cuda-git/src/opencv/build'
make[1]: *** [CMakeFiles/Makefile2:2523: modules/hdf/CMakeFiles/example_hdf_create_groups.dir/all] Error 2
make[1]: Leaving directory '/home/tobias/builds/opencv-cuda-git/src/opencv/build'
make: *** [Makefile:163: all] Error 2
The whole output of the build process and the customized PKGBUILD file can be found here
Cuda version 9, output of nvidia-smi:
Sun Jan 14 14:44:13 2018
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 387.34 Driver Version: 387.34 | |-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce GTX 780 Ti Off | 00000000:01:00.0 N/A | N/A |
| 32% 27C P8 N/A / N/A | 624MiB / 3017MiB | N/A Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| 0 Not Supported |
+-----------------------------------------------------------------------------+
arch-linux compiling opencv
The output suggests that you are usinglibblas
andlibcublas
in parallel (one as part of a cuda-unawarelapack
?). This might be a source of problems. Perhaps useobjdump
to search for the said symbols in both libs.
â Philippos
Jan 15 at 12:16
Thanks for pointing that out! Indeed I have installedblas
andcblas
which ar required by other parts of my system. It seems thatcblas
contains the necessary symbols. I tried to additionally link it in theCMAKE_CXX_FLAGS
, but that didn't change a thing. Do you have an Idea on how to proceed from there ?
â tobi
Jan 15 at 16:08
I'm nocmake
hero, but I'd try to get rid of thelibblas
dependency. There is probably some find script you can adapt so it doesn't hook on the wrong lib. Or you hide it during buildingopencv
. But I'm really outside my knowledge scope here. This doesn't even need to be related to your problem at all.
â Philippos
Jan 15 at 16:16
Thank you in any case! After countless hours I finally found the error. Cmake didn't pass the linking options down correctly. I added a linking flag to LDFLAGS and it worked.
â tobi
Jan 15 at 20:07
add a comment |Â
up vote
0
down vote
favorite
up vote
0
down vote
favorite
I am currently trying to build a version of opencv, featuring cuda, on my arch linux computer. For that, I use opencv-cuda-git as base version. Additionally, I modified the PKGBUILD and added additional flags to further adapt opencv to my system.
However, everytime I run the buildprocess (makepkg csri), it fails with following error message:
[ 16%] Building CXX object modules/hdf/CMakeFiles/example_hdf_create_groups.dir/samples/create_groups.cpp.o
cd /home/tobias/builds/opencv-cuda-git/src/opencv/build/modules/hdf && /usr/bin/cmake -E cmake_link_script CMakeFiles/example_hdf_create_groups.dir/link.txt --verbose=1
/bin/g++-6 -std=c++11 -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Winit-self -Wno-narrowing -Wno-delete-non-virtual-dtor -Wno-comment -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -ffast-math -ffunction-sections -fdata-sections -msse -msse2 -fvisibility=hidden -fvisibility-inlines-hidden -Wno-invalid-offsetof -O3 -DNDEBUG -DNDEBUG -Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now -Wl,--gc-sections -rdynamic CMakeFiles/example_hdf_create_groups.dir/samples/create_groups.cpp.o -o ../../bin/example_hdf_create_groups -L/opt/cuda/lib64 ../../lib/libopencv_hdf.so.3.4.0 ../../lib/libopencv_highgui.so.3.4.0 ../../lib/libopencv_videoio.so.3.4.0 ../../lib/libopencv_imgcodecs.so.3.4.0 ../../lib/libopencv_imgproc.so.3.4.0 ../../lib/libopencv_core.so.3.4.0 ../../lib/libopencv_cudev.so.3.4.0
../../lib/libopencv_core.so.3.4.0: undefined reference to `cblas_zgemm'
../../lib/libopencv_core.so.3.4.0: undefined reference to `cblas_sgemm'
../../lib/libopencv_core.so.3.4.0: undefined reference to `cblas_dgemm'
../../lib/libopencv_core.so.3.4.0: undefined reference to `cblas_cgemm'
make[2]: *** [modules/hdf/CMakeFiles/example_hdf_create_groups.dir/build.make:102: bin/example_hdf_create_groups] Error 1
make[2]: Leaving directory '/home/tobias/builds/opencv-cuda-git/src/opencv/build'
make[1]: *** [CMakeFiles/Makefile2:2523: modules/hdf/CMakeFiles/example_hdf_create_groups.dir/all] Error 2
make[1]: Leaving directory '/home/tobias/builds/opencv-cuda-git/src/opencv/build'
make: *** [Makefile:163: all] Error 2
My previous search suggested that this error might occur due to a linking error with cublas. Therefore I tried to add -L/opt/cuda/lib64 and -lcublas to CMAKE_CXX_FLAGS. That made no difference at all.
Suggestions by another blog contained using gcc-6 instead of g++-6. That however yields another error:
[ 16%] Linking CXX executable ../../bin/example_hdf_create_groups
cd /home/tobias/builds/opencv-cuda-git/src/opencv/build/modules/hdf && /usr/bin/cmake -E cmake_link_script CMakeFiles/example_hdf_create_groups.dir/link.txt --verbose=1
/bin/gcc-6 -std=c++11 -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Winit-self -Wno-narrowing -Wno-delete-non-virtual-dtor -Wno-comment -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -ffast-math -ffunction-sections -fdata-sections -msse -msse2 -fvisibility=hidden -fvisibility-inlines-hidden -Wno-invalid-offsetof -O3 -DNDEBUG -DNDEBUG -Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now -Wl,--gc-sections -rdynamic CMakeFiles/example_hdf_create_groups.dir/samples/create_groups.cpp.o -o ../../bin/example_hdf_create_groups -L/opt/cuda/lib64 ../../lib/libopencv_hdf.so.3.4.0 ../../lib/libopencv_highgui.so.3.4.0 ../../lib/libopencv_videoio.so.3.4.0 ../../lib/libopencv_imgcodecs.so.3.4.0 ../../lib/libopencv_imgproc.so.3.4.0 ../../lib/libopencv_core.so.3.4.0 ../../lib/libopencv_cudev.so.3.4.0
ld: CMakeFiles/example_hdf_create_groups.dir/samples/create_groups.cpp.o: undefined reference to symbol '_ZNSt8ios_base4InitD1Ev@@GLIBCXX_3.4'
/usr/lib/libstdc++.so.6: error adding symbols: DSO missing from command line
make[2]: *** [modules/hdf/CMakeFiles/example_hdf_create_groups.dir/build.make:102: bin/example_hdf_create_groups] Error 1
make[2]: Leaving directory '/home/tobias/builds/opencv-cuda-git/src/opencv/build'
make[1]: *** [CMakeFiles/Makefile2:2523: modules/hdf/CMakeFiles/example_hdf_create_groups.dir/all] Error 2
make[1]: Leaving directory '/home/tobias/builds/opencv-cuda-git/src/opencv/build'
make: *** [Makefile:163: all] Error 2
The whole output of the build process and the customized PKGBUILD file can be found here
Cuda version 9, output of nvidia-smi:
Sun Jan 14 14:44:13 2018
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 387.34 Driver Version: 387.34 | |-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce GTX 780 Ti Off | 00000000:01:00.0 N/A | N/A |
| 32% 27C P8 N/A / N/A | 624MiB / 3017MiB | N/A Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| 0 Not Supported |
+-----------------------------------------------------------------------------+
arch-linux compiling opencv
I am currently trying to build a version of opencv, featuring cuda, on my arch linux computer. For that, I use opencv-cuda-git as base version. Additionally, I modified the PKGBUILD and added additional flags to further adapt opencv to my system.
However, everytime I run the buildprocess (makepkg csri), it fails with following error message:
[ 16%] Building CXX object modules/hdf/CMakeFiles/example_hdf_create_groups.dir/samples/create_groups.cpp.o
cd /home/tobias/builds/opencv-cuda-git/src/opencv/build/modules/hdf && /usr/bin/cmake -E cmake_link_script CMakeFiles/example_hdf_create_groups.dir/link.txt --verbose=1
/bin/g++-6 -std=c++11 -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Winit-self -Wno-narrowing -Wno-delete-non-virtual-dtor -Wno-comment -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -ffast-math -ffunction-sections -fdata-sections -msse -msse2 -fvisibility=hidden -fvisibility-inlines-hidden -Wno-invalid-offsetof -O3 -DNDEBUG -DNDEBUG -Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now -Wl,--gc-sections -rdynamic CMakeFiles/example_hdf_create_groups.dir/samples/create_groups.cpp.o -o ../../bin/example_hdf_create_groups -L/opt/cuda/lib64 ../../lib/libopencv_hdf.so.3.4.0 ../../lib/libopencv_highgui.so.3.4.0 ../../lib/libopencv_videoio.so.3.4.0 ../../lib/libopencv_imgcodecs.so.3.4.0 ../../lib/libopencv_imgproc.so.3.4.0 ../../lib/libopencv_core.so.3.4.0 ../../lib/libopencv_cudev.so.3.4.0
../../lib/libopencv_core.so.3.4.0: undefined reference to `cblas_zgemm'
../../lib/libopencv_core.so.3.4.0: undefined reference to `cblas_sgemm'
../../lib/libopencv_core.so.3.4.0: undefined reference to `cblas_dgemm'
../../lib/libopencv_core.so.3.4.0: undefined reference to `cblas_cgemm'
make[2]: *** [modules/hdf/CMakeFiles/example_hdf_create_groups.dir/build.make:102: bin/example_hdf_create_groups] Error 1
make[2]: Leaving directory '/home/tobias/builds/opencv-cuda-git/src/opencv/build'
make[1]: *** [CMakeFiles/Makefile2:2523: modules/hdf/CMakeFiles/example_hdf_create_groups.dir/all] Error 2
make[1]: Leaving directory '/home/tobias/builds/opencv-cuda-git/src/opencv/build'
make: *** [Makefile:163: all] Error 2
My previous search suggested that this error might occur due to a linking error with cublas. Therefore I tried to add -L/opt/cuda/lib64 and -lcublas to CMAKE_CXX_FLAGS. That made no difference at all.
Suggestions by another blog contained using gcc-6 instead of g++-6. That however yields another error:
[ 16%] Linking CXX executable ../../bin/example_hdf_create_groups
cd /home/tobias/builds/opencv-cuda-git/src/opencv/build/modules/hdf && /usr/bin/cmake -E cmake_link_script CMakeFiles/example_hdf_create_groups.dir/link.txt --verbose=1
/bin/gcc-6 -std=c++11 -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Winit-self -Wno-narrowing -Wno-delete-non-virtual-dtor -Wno-comment -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -ffast-math -ffunction-sections -fdata-sections -msse -msse2 -fvisibility=hidden -fvisibility-inlines-hidden -Wno-invalid-offsetof -O3 -DNDEBUG -DNDEBUG -Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now -Wl,--gc-sections -rdynamic CMakeFiles/example_hdf_create_groups.dir/samples/create_groups.cpp.o -o ../../bin/example_hdf_create_groups -L/opt/cuda/lib64 ../../lib/libopencv_hdf.so.3.4.0 ../../lib/libopencv_highgui.so.3.4.0 ../../lib/libopencv_videoio.so.3.4.0 ../../lib/libopencv_imgcodecs.so.3.4.0 ../../lib/libopencv_imgproc.so.3.4.0 ../../lib/libopencv_core.so.3.4.0 ../../lib/libopencv_cudev.so.3.4.0
ld: CMakeFiles/example_hdf_create_groups.dir/samples/create_groups.cpp.o: undefined reference to symbol '_ZNSt8ios_base4InitD1Ev@@GLIBCXX_3.4'
/usr/lib/libstdc++.so.6: error adding symbols: DSO missing from command line
make[2]: *** [modules/hdf/CMakeFiles/example_hdf_create_groups.dir/build.make:102: bin/example_hdf_create_groups] Error 1
make[2]: Leaving directory '/home/tobias/builds/opencv-cuda-git/src/opencv/build'
make[1]: *** [CMakeFiles/Makefile2:2523: modules/hdf/CMakeFiles/example_hdf_create_groups.dir/all] Error 2
make[1]: Leaving directory '/home/tobias/builds/opencv-cuda-git/src/opencv/build'
make: *** [Makefile:163: all] Error 2
The whole output of the build process and the customized PKGBUILD file can be found here
Cuda version 9, output of nvidia-smi:
Sun Jan 14 14:44:13 2018
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 387.34 Driver Version: 387.34 | |-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce GTX 780 Ti Off | 00000000:01:00.0 N/A | N/A |
| 32% 27C P8 N/A / N/A | 624MiB / 3017MiB | N/A Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| 0 Not Supported |
+-----------------------------------------------------------------------------+
arch-linux compiling opencv
asked Jan 14 at 14:07
tobi
215
215
The output suggests that you are usinglibblas
andlibcublas
in parallel (one as part of a cuda-unawarelapack
?). This might be a source of problems. Perhaps useobjdump
to search for the said symbols in both libs.
â Philippos
Jan 15 at 12:16
Thanks for pointing that out! Indeed I have installedblas
andcblas
which ar required by other parts of my system. It seems thatcblas
contains the necessary symbols. I tried to additionally link it in theCMAKE_CXX_FLAGS
, but that didn't change a thing. Do you have an Idea on how to proceed from there ?
â tobi
Jan 15 at 16:08
I'm nocmake
hero, but I'd try to get rid of thelibblas
dependency. There is probably some find script you can adapt so it doesn't hook on the wrong lib. Or you hide it during buildingopencv
. But I'm really outside my knowledge scope here. This doesn't even need to be related to your problem at all.
â Philippos
Jan 15 at 16:16
Thank you in any case! After countless hours I finally found the error. Cmake didn't pass the linking options down correctly. I added a linking flag to LDFLAGS and it worked.
â tobi
Jan 15 at 20:07
add a comment |Â
The output suggests that you are usinglibblas
andlibcublas
in parallel (one as part of a cuda-unawarelapack
?). This might be a source of problems. Perhaps useobjdump
to search for the said symbols in both libs.
â Philippos
Jan 15 at 12:16
Thanks for pointing that out! Indeed I have installedblas
andcblas
which ar required by other parts of my system. It seems thatcblas
contains the necessary symbols. I tried to additionally link it in theCMAKE_CXX_FLAGS
, but that didn't change a thing. Do you have an Idea on how to proceed from there ?
â tobi
Jan 15 at 16:08
I'm nocmake
hero, but I'd try to get rid of thelibblas
dependency. There is probably some find script you can adapt so it doesn't hook on the wrong lib. Or you hide it during buildingopencv
. But I'm really outside my knowledge scope here. This doesn't even need to be related to your problem at all.
â Philippos
Jan 15 at 16:16
Thank you in any case! After countless hours I finally found the error. Cmake didn't pass the linking options down correctly. I added a linking flag to LDFLAGS and it worked.
â tobi
Jan 15 at 20:07
The output suggests that you are using
libblas
and libcublas
in parallel (one as part of a cuda-unaware lapack
?). This might be a source of problems. Perhaps use objdump
to search for the said symbols in both libs.â Philippos
Jan 15 at 12:16
The output suggests that you are using
libblas
and libcublas
in parallel (one as part of a cuda-unaware lapack
?). This might be a source of problems. Perhaps use objdump
to search for the said symbols in both libs.â Philippos
Jan 15 at 12:16
Thanks for pointing that out! Indeed I have installed
blas
and cblas
which ar required by other parts of my system. It seems that cblas
contains the necessary symbols. I tried to additionally link it in the CMAKE_CXX_FLAGS
, but that didn't change a thing. Do you have an Idea on how to proceed from there ?â tobi
Jan 15 at 16:08
Thanks for pointing that out! Indeed I have installed
blas
and cblas
which ar required by other parts of my system. It seems that cblas
contains the necessary symbols. I tried to additionally link it in the CMAKE_CXX_FLAGS
, but that didn't change a thing. Do you have an Idea on how to proceed from there ?â tobi
Jan 15 at 16:08
I'm no
cmake
hero, but I'd try to get rid of the libblas
dependency. There is probably some find script you can adapt so it doesn't hook on the wrong lib. Or you hide it during building opencv
. But I'm really outside my knowledge scope here. This doesn't even need to be related to your problem at all.â Philippos
Jan 15 at 16:16
I'm no
cmake
hero, but I'd try to get rid of the libblas
dependency. There is probably some find script you can adapt so it doesn't hook on the wrong lib. Or you hide it during building opencv
. But I'm really outside my knowledge scope here. This doesn't even need to be related to your problem at all.â Philippos
Jan 15 at 16:16
Thank you in any case! After countless hours I finally found the error. Cmake didn't pass the linking options down correctly. I added a linking flag to LDFLAGS and it worked.
â tobi
Jan 15 at 20:07
Thank you in any case! After countless hours I finally found the error. Cmake didn't pass the linking options down correctly. I added a linking flag to LDFLAGS and it worked.
â tobi
Jan 15 at 20:07
add a comment |Â
1 Answer
1
active
oldest
votes
up vote
2
down vote
accepted
Okay so to close the question:
The Problem was that opencv needs both Lapack
with the normal blas
and cblas
if you are using the ceres-solver
. However, the opencv build only links cublas
, which apparently lacks support for some needed functions of cblas.
One solution to this Problem was to manually link cblas
by adding CMAKE_EXE_LINKER_FLAGS=-lcblas
to the cmake
call in the PKGBUILD file.
It is probably possible to circumvent this problem altogether by building all dependencies manually with forced cublas
support. However, that is tedious and not always possible since cublas
is only a partial port.
Thanks again to Philippos, who helped me narrrow the problem down.
Shouldn't it be-lcblas
instead of-cblas
in the linker flags option.
â razorx
Apr 24 at 21:24
If I recall correctly that does exactly the same, since I pass it to the linker anyway.
â tobi
Apr 24 at 21:28
It didn't work for me though, but it worked when I added thel
.
â razorx
Apr 24 at 21:33
1
Interesting, I will double check the next days, but in any case the extra l won't do any harm, so I will update my answer accordingly. Thanks for pointing it out.
â tobi
Apr 24 at 21:37
add a comment |Â
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
2
down vote
accepted
Okay so to close the question:
The Problem was that opencv needs both Lapack
with the normal blas
and cblas
if you are using the ceres-solver
. However, the opencv build only links cublas
, which apparently lacks support for some needed functions of cblas.
One solution to this Problem was to manually link cblas
by adding CMAKE_EXE_LINKER_FLAGS=-lcblas
to the cmake
call in the PKGBUILD file.
It is probably possible to circumvent this problem altogether by building all dependencies manually with forced cublas
support. However, that is tedious and not always possible since cublas
is only a partial port.
Thanks again to Philippos, who helped me narrrow the problem down.
Shouldn't it be-lcblas
instead of-cblas
in the linker flags option.
â razorx
Apr 24 at 21:24
If I recall correctly that does exactly the same, since I pass it to the linker anyway.
â tobi
Apr 24 at 21:28
It didn't work for me though, but it worked when I added thel
.
â razorx
Apr 24 at 21:33
1
Interesting, I will double check the next days, but in any case the extra l won't do any harm, so I will update my answer accordingly. Thanks for pointing it out.
â tobi
Apr 24 at 21:37
add a comment |Â
up vote
2
down vote
accepted
Okay so to close the question:
The Problem was that opencv needs both Lapack
with the normal blas
and cblas
if you are using the ceres-solver
. However, the opencv build only links cublas
, which apparently lacks support for some needed functions of cblas.
One solution to this Problem was to manually link cblas
by adding CMAKE_EXE_LINKER_FLAGS=-lcblas
to the cmake
call in the PKGBUILD file.
It is probably possible to circumvent this problem altogether by building all dependencies manually with forced cublas
support. However, that is tedious and not always possible since cublas
is only a partial port.
Thanks again to Philippos, who helped me narrrow the problem down.
Shouldn't it be-lcblas
instead of-cblas
in the linker flags option.
â razorx
Apr 24 at 21:24
If I recall correctly that does exactly the same, since I pass it to the linker anyway.
â tobi
Apr 24 at 21:28
It didn't work for me though, but it worked when I added thel
.
â razorx
Apr 24 at 21:33
1
Interesting, I will double check the next days, but in any case the extra l won't do any harm, so I will update my answer accordingly. Thanks for pointing it out.
â tobi
Apr 24 at 21:37
add a comment |Â
up vote
2
down vote
accepted
up vote
2
down vote
accepted
Okay so to close the question:
The Problem was that opencv needs both Lapack
with the normal blas
and cblas
if you are using the ceres-solver
. However, the opencv build only links cublas
, which apparently lacks support for some needed functions of cblas.
One solution to this Problem was to manually link cblas
by adding CMAKE_EXE_LINKER_FLAGS=-lcblas
to the cmake
call in the PKGBUILD file.
It is probably possible to circumvent this problem altogether by building all dependencies manually with forced cublas
support. However, that is tedious and not always possible since cublas
is only a partial port.
Thanks again to Philippos, who helped me narrrow the problem down.
Okay so to close the question:
The Problem was that opencv needs both Lapack
with the normal blas
and cblas
if you are using the ceres-solver
. However, the opencv build only links cublas
, which apparently lacks support for some needed functions of cblas.
One solution to this Problem was to manually link cblas
by adding CMAKE_EXE_LINKER_FLAGS=-lcblas
to the cmake
call in the PKGBUILD file.
It is probably possible to circumvent this problem altogether by building all dependencies manually with forced cublas
support. However, that is tedious and not always possible since cublas
is only a partial port.
Thanks again to Philippos, who helped me narrrow the problem down.
edited Apr 24 at 21:37
answered Jan 15 at 22:12
tobi
215
215
Shouldn't it be-lcblas
instead of-cblas
in the linker flags option.
â razorx
Apr 24 at 21:24
If I recall correctly that does exactly the same, since I pass it to the linker anyway.
â tobi
Apr 24 at 21:28
It didn't work for me though, but it worked when I added thel
.
â razorx
Apr 24 at 21:33
1
Interesting, I will double check the next days, but in any case the extra l won't do any harm, so I will update my answer accordingly. Thanks for pointing it out.
â tobi
Apr 24 at 21:37
add a comment |Â
Shouldn't it be-lcblas
instead of-cblas
in the linker flags option.
â razorx
Apr 24 at 21:24
If I recall correctly that does exactly the same, since I pass it to the linker anyway.
â tobi
Apr 24 at 21:28
It didn't work for me though, but it worked when I added thel
.
â razorx
Apr 24 at 21:33
1
Interesting, I will double check the next days, but in any case the extra l won't do any harm, so I will update my answer accordingly. Thanks for pointing it out.
â tobi
Apr 24 at 21:37
Shouldn't it be
-lcblas
instead of -cblas
in the linker flags option.â razorx
Apr 24 at 21:24
Shouldn't it be
-lcblas
instead of -cblas
in the linker flags option.â razorx
Apr 24 at 21:24
If I recall correctly that does exactly the same, since I pass it to the linker anyway.
â tobi
Apr 24 at 21:28
If I recall correctly that does exactly the same, since I pass it to the linker anyway.
â tobi
Apr 24 at 21:28
It didn't work for me though, but it worked when I added the
l
.â razorx
Apr 24 at 21:33
It didn't work for me though, but it worked when I added the
l
.â razorx
Apr 24 at 21:33
1
1
Interesting, I will double check the next days, but in any case the extra l won't do any harm, so I will update my answer accordingly. Thanks for pointing it out.
â tobi
Apr 24 at 21:37
Interesting, I will double check the next days, but in any case the extra l won't do any harm, so I will update my answer accordingly. Thanks for pointing it out.
â tobi
Apr 24 at 21:37
add a comment |Â
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f417032%2farch-linux-problems-building-opencv-with-cuda-libopencv-core-so-3-4-0-undefin%23new-answer', 'question_page');
);
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
The output suggests that you are using
libblas
andlibcublas
in parallel (one as part of a cuda-unawarelapack
?). This might be a source of problems. Perhaps useobjdump
to search for the said symbols in both libs.â Philippos
Jan 15 at 12:16
Thanks for pointing that out! Indeed I have installed
blas
andcblas
which ar required by other parts of my system. It seems thatcblas
contains the necessary symbols. I tried to additionally link it in theCMAKE_CXX_FLAGS
, but that didn't change a thing. Do you have an Idea on how to proceed from there ?â tobi
Jan 15 at 16:08
I'm no
cmake
hero, but I'd try to get rid of thelibblas
dependency. There is probably some find script you can adapt so it doesn't hook on the wrong lib. Or you hide it during buildingopencv
. But I'm really outside my knowledge scope here. This doesn't even need to be related to your problem at all.â Philippos
Jan 15 at 16:16
Thank you in any case! After countless hours I finally found the error. Cmake didn't pass the linking options down correctly. I added a linking flag to LDFLAGS and it worked.
â tobi
Jan 15 at 20:07