初期症状
> cargo build --verbose ... = note: collect2: fatal error: ld terminated with signal 11 [Segmentation fault] compilation terminated. error: aborting due to previous error error: could not compile `syn`.
ld
がおかしいらしい。確かに、おかしい。
> ld -v Segmentation fault
これは、Homebrew でインストールした ld
だったので、システム側に変更してみる。
> cat ~/.cargo/config.toml [target.x86_64-unknown-linux-gnu] linker = "/usr/bin/ld"
これでビルドしてみると、libgcc
がない、と言われたので、以下を参考にしてシンボリックリンクを貼った。
> ldconfig -p | grep libgcc libgccpp.so.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libgccpp.so.1 libgcc_s.so.1 (libc6,x86-64) => /lib/x86_64-linux-gnu/libgcc_s.so.1 libgcc_s.so.1 (libc6) => /usr/lib32/libgcc_s.so.1 > sudo ln -s /lib/x86_64-linux-gnu/libgcc_s.so.1 /lib/x86_64-linux-gnu/libgcc_s.so
これでビルドしてみると、 今度は別のエラーでこけた。
syn
をビルドするときに、ファイルが見つからない、みたいなエラー。
たぶん、これと同じ症状。
ここでお手上げだったのだが、 Homebrew の binutils は本来linkされてないものなので、なんとなく unlink してみたら、ビルドできるようになった。
> brew unlink binutils
そもそもなんでlinkされてたんだろう…。
Homebrew の ld
は相変わらず壊れているのだが、よしとしよう。