一応 TL;DR のためにまとめておくと、最近の Mac の環境 ( CommandLine Tool for Xcode 14.0 ?) で Rust 1.53 以前を使おうとすると、 ld: in ... .rlib(lib.rmeta), archive member 'lib.rmeta' with length ... is not mach-o or llvm bitcode file
というメッセージが出てリンカが動かないという現象。リンク先も 9 月のやりとりなので、おそらく 2022 年の秋頃から起きている。
現状これを回避するには新しい Rust を使えばよいが、どうしても古い Rust を使いたい人のためのワークアラウンドとして別のリンカを使う方法があり、
brew install mold
した後に、対象プロジェクトに .cargo/config.toml
ファイルを作り、
[target.x86_64-apple-darwin] linker = "/usr/bin/clang" rustflags = ["-C", "link-arg=--ld-path=/usr/local/bin/ld64.mold"]
と書くと ld
を使わないのでこの問題を回避できる。
なお、 VSCode で rust-analyzer を使うことまでやりたいのであれば、以下のエントリも大いに役立つであろう。