问题描述
今天用如下命令编译ceres时,
git clone https://github.com/ceres-solver/ceres-solver.git
cd ceres-solver
mkdir build && cd build
cmake ..
make -j3
sudo make install
报错如下,提示为cuda导致
/usr/local/cuda-9.0/lib64/libcusolver.so: undefined reference to `GOMP_critical_end'
/usr/local/cuda-9.0/lib64/libcusolver.so: undefined reference to `omp_get_thread_num'
/usr/local/cuda-9.0/lib64/libcusolver.so: undefined reference to `omp_get_num_threads'
/usr/local/cuda-9.0/lib64/libcusolver.so: undefined reference to `GOMP_parallel_start'
/usr/local/cuda-9.0/lib64/libcusolver.so: undefined reference to `omp_get_max_threads'
/usr/local/cuda-9.0/lib64/libcusolver.so: undefined reference to `GOMP_loop_end_nowait'
/usr/local/cuda-9.0/lib64/libcusolver.so: undefined reference to `GOMP_critical_start'
/usr/local/cuda-9.0/lib64/libcusolver.so: undefined reference to `GOMP_parallel_end'
/usr/local/cuda-9.0/lib64/libcusolver.so: undefined reference to `GOMP_loop_dynamic_next'
/usr/local/cuda-9.0/lib64/libcusolver.so: undefined reference to `GOMP_loop_dynamic_start'
collect2: error: ld returned 1 exit status
internal/ceres/CMakeFiles/program_test.dir/build.make:127: recipe for target 'bin/program_test' failed
make[2]: *** [bin/program_test] Error 1
CMakeFiles/Makefile2:672: recipe for target 'internal/ceres/CMakeFiles/program_test.dir/all' failed
make[1]: *** [internal/ceres/CMakeFiles/program_test.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 37%] Linking CXX executable ../../bin/detect_structure_test
[ 37%] Built target detect_structure_test
Makefile:140: recipe for target 'all' failed
make: *** [all] Error 2
查询相关博客后无果,尝试到ceres官网下载2.0版本后,成功安装
问题解决
不使用github上的版本,直接到ceres官网下载,链接如下
http://ceres-solver.org/ceres-solver-2.0.0.tar.gz
然后正常编译即可通过,上面报错的原因暂不得而知。
#1. 下载ceres2.0版本
# 地址为 http://ceres-solver.org/ceres-solver-2.0.0.tar.gz
#2. 解压
#3. 进入目录,然后编译
cd ceres-solver
mkdir build && cd build
cmake ..
make -j3
sudo make install