目录

rustc 编译的程序直接执行报错 `zsh: killed ./main`

目录

文章简介: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 中运行则正常输出。

1
Hello, world!

坏的程序在好的 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:

1
unset LD_DYLD_PATH

尝试在 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 ,看看社区怎么说。