将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版权协议,转载请附上原文出处链接和本声明。