在wsl2安装ros2遇到的一些坑

依赖问题

由于安装的老版本(humble)ros2, 很多必需包直接安装会报依赖小版本号不一致错误,使用apt install解决是很麻烦的, 于是要用一个比较新的依赖处理工具

1
2
sudo apt install aptitude
sudo aptitude install [package]

在[package]填出问题的依赖,aptitude会弹出建议的一些解决方案,按,.切换到一个降版本的解决方案,yes即可

swap空间不足

已经到了编译这一步了,但是编到最后总是报错

1
C++: fatal error: Killed signal terminated program cc1plus

很搞心态,开新terminal用htop命令一查,cpu内存swap全拉满

这个时候就需要给wsl2扩swap空间, 在 c:\Users\用户名 下找一个叫.wslconfig的文件,找不到就创建一个,填:

1
2
[wsl2]
swap=4GB

填完wsl --shutdown重启一下wsl2, 在wsl的终端free -h可以查看swap分区的大小,当然直接htop自然是可以的

如果rosdep已经初始化过了,还要删掉初始化文件重新初始化一下。执行这个sudo rosdep init会有提示

这个时候再colcon build --symlink-install就万事大吉了