我有一台资源受限的实验室机器(不受我控制),基本上只允许我写入外部硬盘。
我需要使用boost和pcl编译我的班级项目。我的程序一直是在外部硬盘驱动器内创建一个conda环境,然后print_r(get_loaded_extensions());
。
这对安装软件包有效。需要编译时,请使用以下CMake工具链文件:
conda install -c conda-forge boost pcl
这将在运行cmake和make时完成编译工作。当您尝试链接时问题就开始了。我得到:
SET(CMAKE_SYSTEM_NAME Linux)
SET(CMAKE_SYSTEM_VERSION 1)
SET(CMAKE_C_COMPILER /XXX/bin/clang)
SET(CMAKE_CXX_COMPILER /XXX/bin/clang++)
SET(CMAKE_FIND_ROOT_PATH /YYY/conda/envs/thesis-env /XXX/llvm)
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
我的理解是pcl的boost依赖关系在链接期间没有得到正确解决。有什么办法可以帮助CMake解决此问题?
答案 0 :(得分:0)
您需要执行以下操作:将-rpath-link=<directory-containing-boost-libs>
添加到链接行。您也可以使用patchelf
之类的名称在libpcl_common.so中将该目录添加为RPATH条目。