error: linking with `cc` failed: exit code: 1
error: linking with `cc` failed: exit code: 1
我有一个单个.rs 文件。当我按 rustc test1.rs
编译它时,出现错误:
error: linking with `cc` failed: exit code: 1
note: cc '-m64' '-L' '/usr/local/Cellar/rust/1.0.0-alpha/lib/rustlib/x86_64-apple-darwin/lib' '-o' 'test1' 'test1.o' '-Wl,-force_load,/usr/local/Cellar/rust/1.0.0-alpha/lib/rustlib/x86_64-apple-darwin/lib/libmorestack.a' '-Wl,-dead_strip' '-nodefaultlibs' '/usr/local/Cellar/rust/1.0.0-alpha/lib/rustlib/x86_64-apple-darwin/lib/libstd-4e7c5e5c.rlib' '/usr/local/Cellar/rust/1.0.0-alpha/lib/rustlib/x86_64-apple-darwin/lib/libcollections-4e7c5e5c.rlib' '/usr/local/Cellar/rust/1.0.0-alpha/lib/rustlib/x86_64-apple-darwin/lib/libunicode-4e7c5e5c.rlib' '/usr/local/Cellar/rust/1.0.0-alpha/lib/rustlib/x86_64-apple-darwin/lib/librand-4e7c5e5c.rlib' '/usr/local/Cellar/rust/1.0.0-alpha/lib/rustlib/x86_64-apple-darwin/lib/liballoc-4e7c5e5c.rlib' '/usr/local/Cellar/rust/1.0.0-alpha/lib/rustlib/x86_64-apple-darwin/lib/liblibc-4e7c5e5c.rlib' '/usr/local/Cellar/rust/1.0.0-alpha/lib/rustlib/x86_64-apple-darwin/lib/libcore-4e7c5e5c.rlib' '-L' '/usr/local/Cellar/rust/1.0.0-alpha/lib/rustlib/x86_64-apple-darwin/lib' '-L' '/Users/alex/Documents/projects/rust/.rust/lib/x86_64-apple-darwin' '-L' '/Users/alex/Documents/projects/rust/lib/x86_64-apple-darwin' '-lSystem' '-lpthread' '-lc' '-lm' '-lcompiler-rt'
note: ld: warning: directory not found for option '-L/Users/alex/Documents/projects/rust/.rust/lib/x86_64-apple-darwin'
ld: warning: directory not found for option '-L/Users/alex/Documents/projects/rust/lib/x86_64-apple-darwin'
ld: can't open output file for writing: test1, errno=21 for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
error: aborting due to previous error
$ rustc --version
rustc 1.0.0-dev
我看过一些与此相关的主题,但其中 none 帮助我解决了问题。
根据您的命令 rustc test1.rs
,编译器推断出可执行文件的名称应该是 test1
。链接器尝试打开此文件以便写入可执行文件,但失败并显示 errno=21
,其字符串化版本为 "Is a directory".
这表明您的工作目录中有一个名为 test1
的目录导致了冲突。
我在 Mac 编译 Rust 时遇到 三个问题:
首先: 如果您对 ld
编写 files/dirs 有任何问题,只需删除该文件并尝试重新编译。我不知道为什么,但 Mac 这个问题时常发生。
其次: 如果您还有其他 ld
错误(与文件访问无关):尝试将以下部分添加到您的 ~/.cargo/config
(如果您没有这个文件可以随意创建):
[target.x86_64-apple-darwin]
rustflags = [
"-C", "link-arg=-undefined",
"-C", "link-arg=dynamic_lookup",
]
[target.aarch64-apple-darwin]
rustflags = [
"-C", "link-arg=-undefined",
"-C", "link-arg=dynamic_lookup",
]
第三: 有时你的 Mac 缺少一些开发 tools/dependencies。使用以下命令自动安装其中最重要的部分:
xcode-select --install
如果你有“注意:/usr/bin/ld:找不到-lsqlite3”
然后安装 libsqlite3-dev:$ sudo apt install libsqlite3-dev
这适用于 Rust 1.53.0,Linux Mint 20.2(基于 Ubuntu 20.04 LTS)
如果您有配备 ARM 处理器的 MacBook M1(x),您需要从 rustup 安装 rust https://sourabhbajaj.com/mac-setup/Rust/
当您 运行 rustup-init
时,使用自定义选项将 aarch64-apple-darwin
更改为 x86_64-apple-darwin
然后您可以将以下内容添加到 .cargo/config.toml
或 .cargo/config
(都可以)
[target.x86_64-apple-darwin]
rustflags = [
"-C", "link-arg=-undefined",
"-C", "link-arg=dynamic_lookup",
]
此解决方案已通过 Rust 1.54 和 MacBook M1 测试
我能够执行 cargo build --release
并根据本教程生成一个 dylib 文件 https://www.youtube.com/watch?v=yqLD22sIYMo
我有一个单个.rs 文件。当我按 rustc test1.rs
编译它时,出现错误:
error: linking with `cc` failed: exit code: 1
note: cc '-m64' '-L' '/usr/local/Cellar/rust/1.0.0-alpha/lib/rustlib/x86_64-apple-darwin/lib' '-o' 'test1' 'test1.o' '-Wl,-force_load,/usr/local/Cellar/rust/1.0.0-alpha/lib/rustlib/x86_64-apple-darwin/lib/libmorestack.a' '-Wl,-dead_strip' '-nodefaultlibs' '/usr/local/Cellar/rust/1.0.0-alpha/lib/rustlib/x86_64-apple-darwin/lib/libstd-4e7c5e5c.rlib' '/usr/local/Cellar/rust/1.0.0-alpha/lib/rustlib/x86_64-apple-darwin/lib/libcollections-4e7c5e5c.rlib' '/usr/local/Cellar/rust/1.0.0-alpha/lib/rustlib/x86_64-apple-darwin/lib/libunicode-4e7c5e5c.rlib' '/usr/local/Cellar/rust/1.0.0-alpha/lib/rustlib/x86_64-apple-darwin/lib/librand-4e7c5e5c.rlib' '/usr/local/Cellar/rust/1.0.0-alpha/lib/rustlib/x86_64-apple-darwin/lib/liballoc-4e7c5e5c.rlib' '/usr/local/Cellar/rust/1.0.0-alpha/lib/rustlib/x86_64-apple-darwin/lib/liblibc-4e7c5e5c.rlib' '/usr/local/Cellar/rust/1.0.0-alpha/lib/rustlib/x86_64-apple-darwin/lib/libcore-4e7c5e5c.rlib' '-L' '/usr/local/Cellar/rust/1.0.0-alpha/lib/rustlib/x86_64-apple-darwin/lib' '-L' '/Users/alex/Documents/projects/rust/.rust/lib/x86_64-apple-darwin' '-L' '/Users/alex/Documents/projects/rust/lib/x86_64-apple-darwin' '-lSystem' '-lpthread' '-lc' '-lm' '-lcompiler-rt'
note: ld: warning: directory not found for option '-L/Users/alex/Documents/projects/rust/.rust/lib/x86_64-apple-darwin'
ld: warning: directory not found for option '-L/Users/alex/Documents/projects/rust/lib/x86_64-apple-darwin'
ld: can't open output file for writing: test1, errno=21 for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
error: aborting due to previous error
$ rustc --version
rustc 1.0.0-dev
我看过一些与此相关的主题,但其中 none 帮助我解决了问题。
根据您的命令 rustc test1.rs
,编译器推断出可执行文件的名称应该是 test1
。链接器尝试打开此文件以便写入可执行文件,但失败并显示 errno=21
,其字符串化版本为 "Is a directory".
这表明您的工作目录中有一个名为 test1
的目录导致了冲突。
我在 Mac 编译 Rust 时遇到 三个问题:
首先: 如果您对 ld
编写 files/dirs 有任何问题,只需删除该文件并尝试重新编译。我不知道为什么,但 Mac 这个问题时常发生。
其次: 如果您还有其他 ld
错误(与文件访问无关):尝试将以下部分添加到您的 ~/.cargo/config
(如果您没有这个文件可以随意创建):
[target.x86_64-apple-darwin]
rustflags = [
"-C", "link-arg=-undefined",
"-C", "link-arg=dynamic_lookup",
]
[target.aarch64-apple-darwin]
rustflags = [
"-C", "link-arg=-undefined",
"-C", "link-arg=dynamic_lookup",
]
第三: 有时你的 Mac 缺少一些开发 tools/dependencies。使用以下命令自动安装其中最重要的部分:
xcode-select --install
如果你有“注意:/usr/bin/ld:找不到-lsqlite3”
然后安装 libsqlite3-dev:$ sudo apt install libsqlite3-dev
这适用于 Rust 1.53.0,Linux Mint 20.2(基于 Ubuntu 20.04 LTS)
如果您有配备 ARM 处理器的 MacBook M1(x),您需要从 rustup 安装 rust https://sourabhbajaj.com/mac-setup/Rust/
当您 运行 rustup-init
时,使用自定义选项将 aarch64-apple-darwin
更改为 x86_64-apple-darwin
然后您可以将以下内容添加到 .cargo/config.toml
或 .cargo/config
(都可以)
[target.x86_64-apple-darwin]
rustflags = [
"-C", "link-arg=-undefined",
"-C", "link-arg=dynamic_lookup",
]
此解决方案已通过 Rust 1.54 和 MacBook M1 测试
我能够执行 cargo build --release
并根据本教程生成一个 dylib 文件 https://www.youtube.com/watch?v=yqLD22sIYMo