ROS2交叉编译-humble

        前段时间因项目需要,交叉编译ROS2,结果花了好些天,走了好多弯路,最终搞定了。

一,尝试一 :

一开始按照既往编译Qt、openCV之类库的思路,直接拉下来源码,用交叉编译工具链就想搞定,后来试了好几天,发现ros2的ament_cmake体系有点麻烦,他似乎不能支持这种本地交叉编译的方式,后来终于放弃,准备换一个思路。

二,尝试二

一开始准备用官网这个链接的思路去试试,毕竟在网上好多人也使用这个思路:

Cross-compilation — ROS 2 Documentation: Foxy documentation

docker也不是很熟,试了半天还是出现各种问题,尤其是那个raw.githubusercontent.com访问不了(鄙视great wall及其相关的垃圾),在docker下改那个hosts文件很麻烦,后来去官方论坛看,这个方法早就不支持了,并且官方给的ubuntu 的docker镜像是18.04版本的,用来构建humble不行,比如cmake版本就太低。

三,尝试三

后来没办法,只好去官网下载了预编译版本(预编译版本只有x86和arm 64平台的),直接用了。

一开始下载的新版,发现新版在官方预编译的时候,用的编译器和glibc比较新,而我的嵌入式系统的glibc是2.33的,后来只好下载了2020年12月发布的forxy版本。

之后在qt中引入这个库的时候,又有不少麻烦,这就是另外一个问题了。

至此项目需求算是解决,但内心有所不甘。

四,尝试四

之后在humble的页面看了看,最终决定用docker官方的arm64平台的ubuntu 20.04镜像去构建,,humble下的交叉编译页面如下:

Cross-compilation — ROS 2 Documentation: Humble documentation

其实就一句话:之前的交叉编译工具已经不再支持,请用docker buildx直接搞就行了。

实际上,连里面提到的docker buildx其实都不需要,直接:

docker pull arm64v8/ubuntu:20.04

docker run  -it arm64v8/ubuntu:20.04  /bin/bash

就进入目标docker images的容器中了,然后完全按照如下本机source安装的步骤,开始就可以了,链接:

Ubuntu (source) — ROS 2 Documentation: Humble documentation

中间遇到一些问题,有一些是桌面编译时就会遇到的,比如acl库缺失、下载失败等,都逐一解决。还有一些是使用docker镜像才会遇到的(docker镜像的环境,和桌面版的ubuntu还是有区别的,但大部分都是缺失默认的支持库),把报错告诉chatgpt,也一一解决,编译完成后记得保存docker 容器到新的image,后边就很方便的可以给别人用了,也可以自己保存。

中间遇到的问题:

待补充。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值