安装ros过程中找不到Boost

在树莓派上安装ROS Kinetic时,遇到Boost库找不到的错误。尝试重装和手动下载安装boost_1.58.0未果,也未成功通过修改CMakeLists.txt或FindBoost.cmake解决。最终,通过在命令行设置环境变量的方式成功解决,例如设置BOOST_ROOT为boost文件夹路径。

在树莓派上基于raspbian(Buster)安装ros
参考网页:http://wiki.ros.org/ROSberryPi/Installing ROS Kinetic on the Raspberry Pi

在执行:sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/kinetic
首先遇到错误:'boost/tr1/unordered_set.hpp' file not found
这在参考网页中有提到,On Raspbian Buster the compilation may fail with "'boost/tr1/unordered_set.hpp' file not found". This is because rospack version used in Kinetic is dependent on boost 1.58. To fix this error try installing boost 1.58 manually.之后便手动下载安装boost_1.58.0

接着遇到第二个错误:
CMake Error at usr/share/cmake/Modules/FindBoost.cmake:1138 (message): Unable to find the requested Boost libraries. Unable to find the Boost header files. Please set BOOST_ROOT to the root directory containing Boost or BOOST_INCLUDEDIR to the directory con

在解决 `Rmaster_Lib` 库不到的问题时,通常涉及 ROS 工作空间的配置、依赖项管理以及库文件的正确安装。以下是一些可能的解决方案和建议: ### 检查工作空间与包结构 确保 `Rmaster_Lib` 所在的功能包已经正确放置在 ROS 工作空间的 `src` 目录下,并且使用了正确的构建系统(如 `catkin_make` 或 `catkin build`)。ROS 功能包应包含 `CMakeLists.txt` 和 `package.xml` 文件以支持编译和依赖解析 [^4]。 ### 安装依赖项 使用 `rosdep` 安装所有缺失的依赖项: ```bash cd ~/catkin_ws rosdep install --from-paths src --ignore-src -r -y ``` 此命令会自动识别并安装功能包所需的系统依赖项 [^4]。 ### 配置 CMakeLists.txt 和 package.xml 在 `CMakeLists.txt` 中确保正确链接了 `Rmaster_Lib` 库,例如添加如下内容: ```cmake target_link_libraries(${PROJECT_NAME}_node ${catkin_LIBRARIES} -lRmaster_Lib # 确保该库名称与实际一致 ) ``` 同时,在 `package.xml` 文件中添加必要的依赖声明: ```xml <depend>Rmaster_Lib</depend> <build_depend>Rmaster_Lib</build_depend> <exec_depend>Rmaster_Lib</exec_depend> ``` ### 设置环境变量 如果库文件未被正确识别,可以尝试手动设置 `LD_LIBRARY_PATH`: ```bash export LD_LIBRARY_PATH=/path/to/Rmaster_Lib:$LD_LIBRARY_PATH ``` 此外,运行以下命令使当前工作空间的环境变量生效: ```bash source devel/setup.bash ``` ### 编译问题排查 在执行 `catkin_make` 时遇到类似 `/usr/bin/ld: undefined reference to symbol` 的错误,通常是因为缺少某些系统库(如 Boost)。可以在 `CMakeLists.txt` 中添加 `-lboost_system` 来链接 Boost 相关库 [^1]: ```cmake target_link_libraries(${PROJECT_NAME}_node ${catkin_LIBRARIES} -lboost_system ) ``` ### 版本兼容性问题 若 `Rmaster_Lib` 对特定版本的依赖库(如 OpenCV)有要求,需要确认当前环境中使用的版本是否匹配。不兼容的库版本可能导致段错误或核心转储问题 [^2]。可以通过以下方式检查 OpenCV 版本: ```bash pkg-config --modversion opencv ``` 如果版本不匹配,考虑重新安装推荐版本。 ### 使用 Rosmaster_Lib 示例代码 假设 `Rmaster_Lib` 提供了示例代码,可参考其用法进行调试: ```cpp #include <Rmaster_Lib.h> int main(int argc, char** argv) { // 初始化 ROS 节点 ros::init(argc, argv, "rmaster_node"); ros::NodeHandle nh; // 创建 Rmaster_Lib 实例 Rmaster rmaster(nh); // 启动主循环 ros::spin(); return 0; } ``` ###
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值