Updated at: 2023-11-03
C 语言作为一个极简的语言很符合我的哲学,但跨平台编译不方便,比如在 macOS 上编译出 Linux 二进制文件。
以前看新闻,Uber 已经将 zig 编译器用在了生产环境,尽管 zig 还没有 1.0。这两天编译 joker 试了一下,确实惊艳。
由于 zig 还没有发布 1.0,并且 brew 里安装的包也比较老旧,所以我用 nami 来安装 zig
nami install zig
有以下几种方式来使用 zig cc
这种方式侵入性最小,比如直接在 make 跟上 CC 变量
make CC="zig cc -target x86_64-linux-gnu"
这种方式适用文件数不多的情况
zig cc -o joker -target x86_64-macos-none main.c run.c
这个子命令是 zig cc 的一个封装
zig build-exe -lc --name joker -target aarch64-macos-none -O ReleaseSafe main.c run.c
zig cc 也支持指定 C 标准 -std=c11。也支持链接 musl 库,非常棒,尽管 musl 的性能不及 glibc,但代码实现很干净清晰 KISS,joker 下个版本将静态链接 musl。更多参数 zig cc --help。