0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

wsl の Ubuntu で catkin_make / catkin build が失敗する (bad variable name)

Last updated at Posted at 2022-01-07

何の記事なの?

wsl 1 の Ubuntu で ROS 1 を使っていて,

mkdir -p ~/catkin_ws/src
cd catkin_ws
catkin_make

しただけなのに,エラーが出て困っている人のための記事(というか,解決していないです).

多分,以下の人に起こります.

  • wsl 1 の Ubuntuで ROS 1 を使っている人
  • wsl 1 で 複数の Ubuntu ディストリビューションを使っている人(wsl --export で吐き出したimageを --import で読み込んで使っている人)
  • Windows Terminal から wsl コマンドで wsl を立ち上げている人

注:3時間ほど溶かしてそれっぽい記事にたどり着いたので,情報共有を目的として記載(下リンク先の要約)

現象

mkdir -p ~/catkin_ws/src
cd catkin_ws
catkin_make

とすると,以下のエラーが発生する.
(catkin build でも同じ原因でエラーが出ますが,以下 catkin_make の話として)

  • PowerShell 5.1(Windows Terminal インストール時)からwslコマンドで立ち上げた場合
-- BUILD_SHARED_LIBS is on
/home/k-kame/rosws_test3/devel/env.sh: 4: export: (x86)/Common: bad variable name
  • PowerShell 7.2.1 から wsl コマンドで立ち上げた場合
-- BUILD_SHARED_LIBS is on
/home/k-kame/rosws_test3/devel/env.sh: 4: export: Files/PowerShell/7:/mnt/c/Program: bad variable name
  • Ubuntu マークのアイコンから立ち上げた場合には,上のエラーは起こらない.

原因

Windows のパスを wsl 側で解釈した際の,フォルダ名の空白など.

解決法(参照元

/etc/wsl.conf に以下を追記

[interop]
appendWindowsPath=false

-注:catkin_make はできるようになるが,code で vs code が起動できなくなる(windowsのパスを参照しなくなるため).他にも問題があるかもしれないが未確認.

運用でカバー

catkin_make しなけりゃ問題ないので,普段はappendWindowsPath=trueにしておいて,「catkin_make しよー」と思って立ち上げる時だけ,Windows からappendWindowsPath=falseにする.

ただし,上記書き換え後に wsl を終了させ,立ち上げなおす必要がある(powershell で以下を実行).

wsl --shutdown

元記事には「スクリプトを直せ」と書いてあるけど,さてどうしたものか(分かったら追記します.うまい方法をご存じの方がいたら教えてください・・・).

0
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?