我有一个单个 .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
我看过一些与此相关的话题,但没有一个能帮我解决问题。
答案 0 :(得分:6)
我在 Mac 编译 Rust 时遇到了三个问题:
首先:如果您在通过 ld
写入文件/目录时遇到任何问题,只需删除该文件并尝试重新编译。我不知道为什么,但在 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 缺少一些开发工具/依赖项。使用以下命令自动安装其中最重要的:
xcode-select --install
答案 1 :(得分:4)
从您的命令rustc test1.rs
,编译器推断可执行文件的名称应为test1
。链接器尝试打开此文件,以便它可以编写可执行文件,但失败的是errno=21
,其字符串化版本为"是目录"。
这表明您的工作目录中有一个名为test1
的目录,导致冲突。
答案 2 :(得分:0)
就我而言,我确实需要安装一个lib以使锈工作:
sudo apt-get install libfreetype6-dev
答案 3 :(得分:0)
如果你有“注意:/usr/bin/ld:找不到-lsqlite3”
然后安装 libsqlite3-dev: $ sudo apt install libsqlite3-dev
这适用于 Rust 1.53.0、Linux Mint 20.2(基于 Ubuntu 20.04 LTS)
答案 4 :(得分:-1)
我知道答案是针对Mac的,但万一某些Linux用户来了。
就我而言,我需要:
sudo apt install cmake
(Peppermint Linux)