告别apt install失败:手把手教你为Ubuntu 20.04上的ROS2 Humble手动编译安装serial库

张开发
2026/5/3 13:06:25 15 分钟阅读
告别apt install失败:手把手教你为Ubuntu 20.04上的ROS2 Humble手动编译安装serial库
告别apt install失败手把手教你为Ubuntu 20.04上的ROS2 Humble手动编译安装serial库在ROS1时代sudo apt install ros-melodic-serial这样的命令几乎能解决所有依赖问题。但当你满怀期待地输入apt search ros-humble-serial时终端返回的空结果可能会让你瞬间懵圈——这就是许多ROS2初学者遇到的第一个文化冲击。1. 为什么ROS2不再提供现成的serial库ROS2的包管理策略与ROS1有着本质区别。在ROS1中官方维护了一个庞大的二进制包仓库几乎囊括了所有常用组件。而ROS2采用了更模块化的设计理念去中心化包管理ROS2鼓励开发者使用系统原生包管理器如apt或源码编译而非大而全的官方仓库版本灵活性手动编译允许你精确控制库版本避免与系统其他组件产生冲突跨平台兼容源码安装方式更容易移植到非Ubuntu系统serial库就是一个典型例子——这个基础的串口通信库虽然重要但因其稳定性高、更新频率低未被纳入ROS2官方仓库。这就好比IKEA不再提供组装好的家具而是给你木板和图纸虽然麻烦但更灵活。2. 环境准备搭建编译流水线2.1 基础依赖安装在开始之前确保你的Ubuntu 20.04系统已装备编译工具链sudo apt update sudo apt install -y build-essential cmake git小技巧如果你在中国大陆可以先配置git加速git config --global url.https://gitclone.com/.insteadOf https://2.2 ROS2 Humble工作区检查确认你的ROS2环境变量已正确加载source /opt/ros/humble/setup.bash echo $ROS_DISTRO # 应输出humble3. 两种源码获取方式对比根据你的网络环境可以选择以下任一仓库仓库类型地址下载速度更新时效性官方仓库https://github.com/wjwwood/serial.git较慢实时国内镜像https://github.com/ZhaoXiangBox/serial.git快延迟1-2天推荐使用国内镜像除非你需要最新commitgit clone https://github.com/ZhaoXiangBox/serial.git cd serial4. 编译安装全流程4.1 标准编译流程mkdir build cd build cmake .. make sudo make install这个过程会在以下路径安装文件头文件/usr/local/include/serial库文件/usr/local/lib/libserial.so4.2 验证安装结果创建测试文件test_serial.cpp#include serial/serial.h int main() { serial::Serial my_serial; return 0; }编译测试g test_serial.cpp -lserial -o test_serial ./test_serial # 无报错即成功5. 常见问题解决方案Q编译时报错找不到serial.hsudo cp -r /usr/local/include/serial /usr/include/Q运行时出现链接错误sudo ldconfigQ需要指定安装路径cmake -DCMAKE_INSTALL_PREFIX/your/path ..6. 进阶集成到ROS2项目在你的package.xml中添加dependserial/depend在CMakeLists.txt中find_package(serial REQUIRED) target_link_libraries(your_node PRIVATE serial::serial)记得在vscode的c_cpp_properties.json中添加包含路径includePath: [ /usr/local/include ]7. 为什么手动编译值得掌握上周指导一个学生时他抱怨这太麻烦了但三天后他兴奋地告诉我用同样的方法解决了其他五个依赖问题。手动编译就像学自行车——开始需要辅助轮但掌握后能去任何地方。在ROS2生态中你会经常遇到最新算法只有源码需要修改库的内部实现特殊硬件平台的定制需求每次成功编译一个库你的开发者工具箱就多了一件趁手兵器。

更多文章