zig cc: 跨平台编译 C 语言项目

Updated at: 2023-11-03

C 语言的痛

C 语言作为一个极简的语言很符合我的哲学,但跨平台编译不方便,比如在 macOS 上编译出 Linux 二进制文件。

以前看新闻,Uber 已经将 zig 编译器用在了生产环境,尽管 zig 还没有 1.0。这两天编译 joker 试了一下,确实惊艳。

zig

由于 zig 还没有发布 1.0,并且 brew 里安装的包也比较老旧,所以我用 nami 来安装 zig

nami install zig

有以下几种方式来使用 zig cc

替换 CC

这种方式侵入性最小,比如直接在 make 跟上 CC 变量

make CC="zig cc -target x86_64-linux-gnu"

直接使用 zig cc

这种方式适用文件数不多的情况

zig cc -o joker -target x86_64-macos-none main.c run.c

使用 zig build-exe

这个子命令是 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。


评论