WSL2+VSCode で linkerが見つからないと怒られた時の対処法

programing IT
programing

WindowsアプリとWSL2上のUbuntuで動く実行ファイルをそれぞれ開発していたところ、WSL2+VSCodeで”error: linker `rust-lld.exe` not found”とエラーが出てきて、rust-analyzerがきちんと動作しなくなった。

原因

Windowsでrust-lldを導入したところ、VSCodeではlinkerに’rust-lld.exe’を使用するようグローバルにセッティングされていた。具体的にはsettins.jsonに以下の記述が追加されていた。

  "rust-analyzer.cargo.extraEnv": {
    "RUSTFLAGS": "-Clinker=rust-lld.exe"
  }

当たり前だがUbuntuにはrust-lld.exeはインストールしてないし、したとしても動かないのでこれが引っかかっていた。

解決方法

正常に動くリンカを設定してやる。具体的にはWSL2のプロジェクトそれぞれに.vscode/settings.jsonファイルを作成し、以下のように記述する。

{
  "rust-analyzer.cargo.extraEnv": {
    "RUSTFLAGS": "-Clinker=cc"
  }
}

lldを使いたい時はその旨記述。

{
  "rust-analyzer.cargo.extraEnv": {
    "RUSTFLAGS": "-Clinker=cc -Clink-arg=-fuse-ld=lld"
  }
}

これでコード編集時の大量のエラー下線が出なくなって安心。

コメント

タイトルとURLをコピーしました