ROS踩坑|编译的二进制debian文件安装后无法使用

22 篇文章 1 订阅

问题描述:

在ROS中将自己的功能包打包为二进制文件后,想安装在自己的主机上测试下打包的有没有问题。使用dpkg命令安装后发现可以使用,便将这个debian文件装到另一个主机上。
没想到,最后竟然用不了,显示找不到可执行文件。明明装到自己的电脑上可以,到那时装到别的电脑上就不行。当时以为遇到啥玄学问题了,不过经过排查一番发现还是自己的操作有问题
1

原因分析

经过排查主要有两个原因:
第一个问题:
为什么撞到自己的电脑上没问题而装到别人的电脑上没问题?
因为我的电脑上本来就装的有这个package,当我用roslauch的时候,自然就在我编译的那个工作空间里找到了相应的包,并可以成功运行。属于是工作空间的覆盖问题。
第二个问题:
为什么找不到可执行文件?
这个是因为我的二进制包的CMakeList写的有问题,没有将编译的可执行文件放入,所以装到别人的主机上找不到可执行文件。

解决办法:

第一个问题:
想要在自己的电脑上验证,需要将.bashrc上source自己的工作空间的那一行给注释掉,这样在新开一个terminal的时候,不会自动source到自己的工作空间路径下面。
一般来讲这么操作就行了,但是我遇到一个特别奇怪的事,不知道是不是个例。就是我roscd我的包目录并不是我的工作空间下,实在ros默认的opt文件夹下。但是我roslaunch的时候,执行的还是我的工作空间下的东西。所以我干脆直接把我的工作空间里的那个包给删了。

第二个问题:
这个主要是修改CMakeLists,就行了。下面放一个模板

# Mark executables and/or libraries for installation
install(TARGETS mvcam #这里放自己要链接的可执行文件
  ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
  LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
  RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)

然后别的文件夹,比如launch等想要放进二进制包中的话,需要把这句话放如CMakeList中

## Mark other files for installation (e.g. launch and bag files,etc.)
 install(DIRECTORY launch/ DESTINATION 
 	${CATKIN_PACKAGE_SHARE_DESTINATION}/launch 
 	PATTERN ".svn" EXCLUDE)

友情链接:

**
如何将功能包打包为debian二进制文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值