问题描述:
Cmakelists文件配置如下:
# Ceres
find_package(Ceres REQUIRED)
include_directories(${CERES_INCLUDE_DIRS})
add_executable(cere_test src/cere_test.cpp)
target_link_libraries(cere_test ${OpenCV_LIBS} ${CERES_LIBRARIES})
编译报错:
CMake Warning at CMakeLists.txt:47 (add_executable): Cannot generate a safe runtime search path for target cere_test because files in some directories may conflict with libraries in implicit directories:
runtime library [libglog.so.0] in /usr/lib/x86_64-linux-gnu may be hidden by files in: /opt/anaconda3/lib
Some of these libraries may not be found correctly.
问题分析:
这个警告是由于在编译过程中,CMake无法为cere_test
目标生成一个安全的运行时搜索路径。原因是某些目录中的文件可能与隐式目录中的库冲突。具体来说,运行时库libglog.so.0
可能被隐藏在/opt/anaconda3/lib
目录下的文件中。
问题解决思路:
确保你的系统中只有一个版本的libglog.so.0
库,系统中确实存在多个版本的libglog.so.0
库,你可以尝试创建一个软链接,将其中一个版本链接到另一个版本所在的目录。在/opt/anaconda3/lib
目录下创建一个指向/usr/lib/x86_64-linux-gnu/libglog.so.0
的软链接:
尝试删除已存在的文件,然后重新创建符号链接。可以使用以下命令删除文件:
rm /opt/anaconda3/lib/libglog.so.0
在/opt/anaconda3/lib
目录下创建一个指向/usr/lib/x86_64-linux-gnu/libglog.so.0
的软链接:
ln -s /usr/lib/x86_64-linux-gnu/libglog.so.0 /opt/anaconda3/lib/libglog.so.0
最后成功编译: