将ROS程序打包成二进制deb安装包可以通过以下步骤实现,综合多个权威方法整理如下:
一、准备工作
- 安装`bloom`生成deb包:`sudo apt-get install python-bloom`
- 安装`fakeroot`权限管理工具:`sudo apt-get install fakeroot`
- 安装`rosdep`管理依赖(可选):`sudo apt-get install rosdep`
构建ROS工作区
- 确保功能包已编译:`catkin_make`或`catkin build`
- 编译完成后进入`devel`目录:`cd ~/catkin_workspace/devel`
二、打包步骤
配置CMakeLists.txt
- 在`CMakeLists.txt`中添加安装规则:
```cmake
install(TARGETS your_package_name
RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
INCLUDE_DIRS ${CATKIN_PACKAGE_INCLUDE_DESTINATION}
)
```
- 包含脚本和头文件:
```cmake
install(DIRECTORY include/${PROJECT_NAME} DESTINATION ${CATKIN_GLOBAL_INCLUDE_DESTINATION})
install(DIRECTORY script DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION})
```
生成debian包配置
- 运行`bloom-generate`生成debian目录:
```bash
bloom-generate rosdebian --os-name ubuntu --ros-distro kinetic
```
- 编辑生成的`debian/rules`文件,确保动态库依赖正确。若存在未通过包管理安装的库(如`libprotobuf.so.15`),需在`debian/control`中添加`Build-Depends`或使用`dh_shlibdeps`修复依赖:
```bash
dh_shlibdeps -- dpkg - shlibdeps - params="--"
```
打包生成deb文件
- 执行打包命令:
```bash
fakeroot debian/rules binary
```
- 生成的deb文件位于源包目录的`debian`上层。
三、注意事项
依赖管理: 确保所有依赖库通过包管理安装,或手动添加到`debian/control`中 动态库路径
多版本兼容性:打包时指定与目标系统一致的ROS发行版(如`kinetic`、`noetic`等)
通过以上步骤,可将ROS功能包打包为独立的二进制deb安装包,便于分发和部署。