文章简介:Mac m1 机器上安装的 rust 编译运行程序遇到问题 zsh: killed ./main
,问题解决
在 Mac M1 机器上安装完 rust 后运行程序,报错 zsh: killed ./main
。
先看下我的环境 fastfetch
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
..' xxx@hostname
,xNMM. --------------------
.OMMMMo OS: macOS Ventura 13.4 arm64
lMM" Host: MacBook Pro (14-inch, 2021)
.;loddo:. .olloddol;. Kernel: Darwin 22.5.0
cKMMMMMMMMMMNWMMMMMMMMMM0: Uptime: 22 days, 22 hours, 40 mins
.KMMMMMMMMMMMMMMMMMMMMMMMWd. Packages: 220 (nix-system), 45 (nix-default), 158 (brew), 48 (brew-cask)
XMMMMMMMMMMMMMMMMMMMMMMMX. Shell: zsh 5.9
;MMMMMMMMMMMMMMMMMMMMMMMM: Display (Color LCD): 3024x1964 @ 120 Hz (as 1512x982) in 14" [Built-in]
:MMMMMMMMMMMMMMMMMMMMMMMM: DE: Aqua
.MMMMMMMMMMMMMMMMMMMMMMMMX. WM: Quartz Compositor
kMMMMMMMMMMMMMMMMMMMMMMMMWd. WM Theme: Multicolor (Dark)
'XMMMMMMMMMMMMMMMMMMMMMMMMMMk Font: .AppleSystemUIFont [System], Helvetica [User]
'XMMMMMMMMMMMMMMMMMMMMMMMMK. Cursor: Fill - Black, Outline - White (32px)
kMMMMMMMMMMMMMMMMMMMMMMd Terminal: tmux 3.4
;KMMMMMMMWXXWMMMMMMMk. CPU: Apple M1 Pro (8) @ 3.23 GHz
"cooc*" "*coo'" GPU: Apple M1 Pro (14) @ 1.30 GHz [Integrated]
Memory: 13.42 GiB / 16.00 GiB (84%)
Swap: 17.39 GiB / 18.00 GiB (97%)
Disk (/): 425.64 GiB / 460.43 GiB (92%) - apfs [Read-only]
Disk (/Volumes/code): 425.64 GiB / 460.43 GiB (92%) - apfs
Local IP (en0): 192.167.1.4/24
Battery (bq40z651): 84% (3 hours, 52 mins remaining) [Discharging]
Locale: en_US.UTF-8
|
1
2
3
4
5
6
7
8
|
rustc --version -v
rustc 1.83.0 (90b35a623 2024-11-26)
binary: rustc
commit-hash: 90b35a6239c3d8bdabc530a6a0816f7ff89a0aaf
commit-date: 2024-11-26
host: aarch64-apple-darwin
release: 1.83.0
LLVM version: 19.1.1
|
执行如下代码会报错
1
2
3
4
5
6
7
8
9
|
cat <<EOF > main.rs
fn main() {
println!("Hello, world!");
}
EOF
rm -rf main && rustc main.rs && ./main && rm -rf main.rs main
zsh: killed ./main
|
开了新的 shell 中运行则正常输出。
坏的程序在好的 shell 中也报相同的错误。
多次尝试后发现新开的 zsh 下正常,tmux 下的 zsh 中有问题,开始怀疑是否是环境变量的问题。diff 了两个环境的环境变量如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
--- 1good.env 2024-12-13 21:56:57.329383153 +0800
+++ 1bad.env 2024-12-13 21:56:45.666162367 +0800
@@ -1,19 +1,29 @@
+AR=
+AS=
AUTO_NOTIFY_EXPIRE_TIME=8000
AUTO_NOTIFY_THRESHOLD=10
AUTO_NOTIFY_VERSION=0.10.0
+CC=
CLICOLOR=true
COLORTERM=truecolor
COMMAND_MODE=unix2003
CONDA_PROMPT_MODIFIER=false
+CONFIG_SHELL=
+CXX=
+DIRENV_DIFF=
+DIRENV_DIR=
+DIRENV_FILE=
+DIRENV_WATCHES=
EDITOR=vim
+HOST_PATH=
+IN_NIX_SHELL=
JENV_LOADED=1
JENV_SHELL=zsh
+LANG=en_US.UTF-8
LC_CTYPE=UTF-8
+LD=
+LD_DYLD_PATH=
|
zsh 非 tmux 下尝试不断设置不同的环境变量后测试发现好的环境下设置了 LD_DYLD_PATH 变量就会有问题。
最小重现代码如下:
1
2
3
4
5
6
7
8
|
export LD_DYLD_PATH=
cat <<EOF > main.rs
fn main() {
println!("Hello, world!");
}
EOF
rm -rf main && rustc main.rs && ./main && rm -rf main.rs main
|
检查了当前我在使用的 dotfiles 中没有设置过 LD_DYLD_PATH,尝试一下 workaround:
尝试在 linux 下看看是否会有同样的问题:
1
2
3
|
docker run --rm -it docker.m.daocloud.io/library/rust:1-bookworm bash
Hello, world!
|
看起来是 macos 下特有的问题。
1
2
3
4
|
sudo dtrace ./main
dtrace: system integrity protection is on, some features will not be available
dtrace: failed to execute /tmp/main: Malformed Mach-o file
|
提了 issue ,看看社区怎么说。