MacOS、库"is not mach-o or llvm bitcode for architecture arm64"下的货物链接器错误



我在执行我编写的rust库中的测试时遇到了一些问题。cargo checkcargo build运行时没有问题,但当我尝试执行程序时,我遇到了一个链接器错误,我在解密时遇到了一些问题。

$ cargo test -v
Fresh unicode-xid v0.2.2
Fresh cfg-if v1.0.0
Fresh ppv-lite86 v0.2.16
Fresh ryu v1.0.9
Fresh itoa v1.0.1
Fresh libc v0.2.112
Fresh proc-macro2 v1.0.36
Fresh quote v1.0.14
Fresh getrandom v0.2.3
Fresh gmp-mpfr-sys v1.4.7
Fresh az v1.2.0
Fresh syn v1.0.84
Fresh rand_core v0.6.3
Fresh serde_derive v1.0.133
Fresh rand_chacha v0.3.1
Fresh serde v1.0.133
Fresh rand v0.8.4
Fresh serde_json v1.0.74
Fresh rug v1.14.0
Compiling discus-backend v0.1.0
Running `rustc --crate-name discus_backend --edition=2018 src/lib.rs --error-format=json --json=diagnostic-rendered-ansi --emit=dep-info,link -C embed-bitcode=no -C split-debuginfo=unpacked -C debuginfo=2
--test -C metadata=c71e1fcdeaefee0d -C extra-filename=-c71e1fcdeaefee0d --out-dir /Users/alex/Documents/PhD/discus/backend/target/debug/deps -C incremental=/Users/alex/Documents/PhD/discus/backend/target/debug/
incremental -L dependency=/Users/alex/Documents/PhD/discus/backend/target/debug/deps --extern rand=/Users/alex/Documents/PhD/discus/backend/target/debug/deps/librand-fdf71b69660f64cc.rlib --extern rug=/Users/al
ex/Documents/PhD/discus/backend/target/debug/deps/librug-5dfded8345f82a31.rlib --extern serde=/Users/alex/Documents/PhD/discus/backend/target/debug/deps/libserde-3fe66fa2e4f801a1.rlib --extern serde_json=/Users
/alex/Documents/PhD/discus/backend/target/debug/deps/libserde_json-fa4a5cc9d88aac71.rlib -L native=/Users/alex/Documents/PhD/discus/backend/target/debug/build/gmp-mpfr-sys-baf189f7359fe85f/out/lib
error: linking with `cc` failed: exit status: 1
|
= note: "cc" "-arch" "arm64" [..ommited a wall of text..]
= note: ld: in /Users/alex/Documents/PhD/discus/backend/target/debug/deps/libgmp_mpfr_sys-fc4a05e05df117d3.rlib(randclr.o), archive member 'randclr.o' with length 496 is not mach-o or llvm bitcode for architucture arm64
clang-11: error: linker command failed with exit code 1 (use -v to see invocation)

warning: `discus-backend` (lib test) generated 9 warnings (9 duplicates)
error: could not compile `discus-backend` due to previous error; 9 warnings emitted

我怀疑这是我在MacOS上的开发环境的一些问题,我最近从Linux迁移到了MacOS,它在Linux上运行良好,在GitLab上建立的持续集成运行测试没有问题。

$ cc -v
Apple clang version 13.0.0 (clang-1300.0.29.30)
Target: arm64-apple-darwin21.2.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
$ ld -v
ld -v                                                                    ~
@(#)PROGRAM:ld  PROJECT:ld64-711
BUILD 21:57:24 Nov 17 2021
configured to support archs: armv6 armv7 armv7s arm64 arm64e arm64_32 i386 x86_64 x86_64h armv6m armv7k armv7m armv7em
LTO support using: LLVM version 13.0.0, (clang-1300.0.29.30) (static support for 27, runtime is 27)
TAPI support using: Apple TAPI version 13.0.0 (tapi-1300.0.6.5)

尝试使用不同的rustup安装程序,通过官方的rust安装脚本、nikpkg和自制程序。每个都有相同的问题。

如果有人能提供任何建议,我们将不胜感激!谢谢

您可以尝试使用x86_64-apple-darwin版本的rust。

我从中找到了这个方法,它解决了我的问题。

最新更新