错误:与`cc`链接失败:退出代码:1

时间:2015-01-24 09:49:53

标签: macos rust

我有一个单个 .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

我看过一些与此相关的话题,但没有一个能帮我解决问题。

5 个答案:

答案 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)