将ROS功能包打包生成deb安装包

将ROS功能包打包生成deb安装包

1,若未安装bloom,在终端下执行下面命令进行安装。

sudo apt-get install python-bloom

2,修改ROS功能包的CMakeList.txt文件,主要是配置Install部分,包括配置可执行文件、包含的头文件、脚本文件等。
3,确保当前文件已经编译过(若未编译,需要编译当前功能包),在catkin_make的路径下执行以下命令

bloom-generate rosdebian --os-name ubuntu --ros-distro melodic

4,第三步会在该node包下生成一个debian的文件夹,在debian的上一级路径下执行下面命令打包生成deb安装包

fakeroot debian/rules binary

bug解决

例如:dpkg-shlibdeps: error: no dependency information found for /usr/local/lib/libprotobuf.so.15
其他动态的库类似,因为这些包是你源码安装的,不是通过dpkg方式来安装的,系统找不到依赖啥啥的,执行以下命令。

找到Debian/rules,打开之后找到override_dh_shlibdeps,在dpkg-shlibdeps那一行最后加上如下选项:

 dh_shlibdeps   --dpkg-shlibdeps-params=--ignore-missing-info

网上很多教程都是加这句话,我的不行,直接在终端运行下面的命令就好了,误打误撞,我就是这样搞定的,真神奇!!

dh_shlibdeps   --dpkg-shlibdeps-params=--ignore-missing-info
fakeroot debian/rules binary

CMAKE编写:

#配置可执行文件
install(TARGETS topic_publisher topic_subscriber            //node包

  RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)

#配置包含的头文件(安装后可在/opt/ros/kinetic/include/${PROJECT_NAME}路径下找到该头文件)
install(DIRECTORY include/${PROJECT_NAME}/

  DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION}

)

#配置要开放的文件夹(安装后可在/opt/ros/kinetic/share/${PROJECT_NAME}路径下找到)
install(DIRECTORY launch rviz

  DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}

)
//记得都是相对路径,不要留下绝对路径
set(aruco_libs   ${CMAKE_CURRENT_SOURCE_DIR}/../../../catkin_aruco_lib/build/lib/libAruco_jiabin.a)

#配置自己生成的链接库
install(FILES  ${aruco_libs}
  DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} 
)

参考教程如下
https://blog.csdn.net/TurboIan/article/details/80174063
https://www.jb51.cc/ubuntu/350407.html
https://blog.csdn.net/xiaoyuanwuhui/article/details/101028696


版权声明:本文为weixin_45810093原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。