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"
}
}これでコード編集時の大量のエラー下線が出なくなって安心。

コメント