[ROS] [WSL] 子系统装ros-noetic问题


前两天尝试安装子系统的时候遇到的问题,使用的鱼香一键安装,但是新建了一个空的工作空间没法过编译,csdn搜索无果,python环境3.8.10,趁这个机会向大家请教一下

1 个赞

我看上面写了语法错误,找文件看一下呢

Ubuntu版本是20,04是吧。

检查一下功能包是不是放到了src目录下,且功能包的cmake文件是不是正确编写了。

我尝试着去找了他所指出的文件,没有发现明显错误(copy给gpt看的)

是20.04,我只是建了一个空的src,然后直接进行的编译,就出现了这个错误

那不应该有问题。换个工具试一下:
Installation — colcon documentation
安装这个,删除之前编译的输出,只留下src,然后用colcon build编译。
这个工具是ROS系列最新的工具包

问题解决了吗 :grinning:


你说的另外一种方式我貌似没有安装成功,但是出现了新的情况,我还在整理,不知道该怎么描述。如图所示,连续两次source显示的结果不一样,一次成功一次不成功,如此反复,我不太懂编译的原理,所以现在很懵

我明白了,用下面的方法:

第一步:

sudo vim /etc/wsl.conf

第二步:
输入以下内容后保存退出

# 不加载Windows中的PATH内容
[interop]
appendWindowsPath = false

第三步:
在Windows PowerShell 执行:

wsl --shutdown

这样就规范了PATH的值,应该就没问题了

2 个赞

厉害,目前看来问题确实解决了,编译新包没有任何问题,我之前想过会不会是子系统安装的路径出现错误,但是不懂这方面原理,也看不出来具体问题,感谢大佬

另外,请问这个问题大概是什么原理呢,因为我wsl没装好所以PATH的值出现了问题吗

是因为Windows的PATH中会出现Linux不支持的字符,所以有些时候需要让WSL不继承系统的PATH.

哦哦,不是很懂原理,不过大概能明白是怎么一回事,之前我echo $PATH看见那一长串还以为没什么问题,感谢大佬

我用了很长一段时间的WSL了,但是好像没有出现过类似的问题,也没有/etc/wsl.conf文件,请问你的是WSL1还是2?

这是WSL2。WSL1和2都会自动继承Windows的PATH,在一定程度上会对LInux环境产生干扰。本质上我们是不希望Windows环境变量进入Linux环境的(:slight_smile:)

wsl2,csdn上找的教程

尽量还是不要用wsl吧