"简单"的Zig语言
被Rust折腾的受不了,今天接触了下Zig语言,发现相对Rust而言,Zig"简单"的多了....
一 安装
- 直接在官方下载一个压缩包,解压到某个目录下,比如我解压到 c:\zig
- 将 c:\zig 目录添加到系统环境变量 path 里面
安装很简单....
二 测试下
- 打开命令行
- mkdir test
- cd test
- zig init-exe #创建一个exe项目骨架?
- zig build run #编译将运行
三 交叉编译
编译为 linux
zig build -Dtarget=x86_64-linux-musl
执行完后在 项目的 zig_out\bin 下面有个 test 文件,文件大小为751K,复制到 ubuntu 环境下,顺利的执行.
- 编译为linux,并且优化生成的二进制文件大小
zig build -Dtarget=x86_64-linux-musl -Drelease-small=true
生成的文件的大小为 9K ,真够小的....
编译为linux,并且优化方案为"快速"
zig build -Dtarget=x86_64-linux-musl -Drelease-fast=true
生成的二进制文件为691K ,具体快在哪,不清楚.不过编译时间好像大大增加了,估计优化比较耗时
- 编译为arm CPU使用linux
zig build -Dtarget=aarch64-linux-musl
复制到我的群晖机器上,正常运行!
- 编译为 wasm
zig build -Dtarget=wasm32-wasi-musl
正确编译出了一个wasm文件,但不知道怎么在网页中使用它,没研究过...
四 支持哪些目标的交叉编译?
zig targets
里面 的libc 可以看到:
"aarch64_be-linux-gnu",
"aarch64_be-linux-musl",
"aarch64_be-windows-gnu",
"aarch64-linux-gnu",
"aarch64-linux-musl",
"aarch64-windows-gnu",
"aarch64-macos-none",
"aarch64-macos-none",
"aarch64-macos-none",
"armeb-linux-gnueabi",
"armeb-linux-gnueabihf",
"armeb-linux-musleabi",
"armeb-linux-musleabihf",
"armeb-windows-gnu",
"arm-linux-gnueabi",
"arm-linux-gnueabihf",
"arm-linux-musleabi",
"arm-linux-musleabihf",
"thumb-linux-gnueabi",
"thumb-linux-gnueabihf",
"thumb-linux-musleabi",
"thumb-linux-musleabihf",
"arm-windows-gnu",
"csky-linux-gnueabi",
"csky-linux-gnueabihf",
"x86-linux-gnu",
"x86-linux-musl",
"x86-windows-gnu",
"m68k-linux-gnu",
"m68k-linux-musl",
"mips64el-linux-gnuabi64",
"mips64el-linux-gnuabin32",
"mips64el-linux-musl",
"mips64-linux-gnuabi64",
"mips64-linux-gnuabin32",
"mips64-linux-musl",
"mipsel-linux-gnueabi",
"mipsel-linux-gnueabihf",
"mipsel-linux-musl",
"mips-linux-gnueabi",
"mips-linux-gnueabihf",
"mips-linux-musl",
"powerpc64le-linux-gnu",
"powerpc64le-linux-musl",
"powerpc64-linux-gnu",
"powerpc64-linux-musl",
"powerpc-linux-gnueabi",
"powerpc-linux-gnueabihf",
"powerpc-linux-musl",
"riscv64-linux-gnu",
"riscv64-linux-musl",
"s390x-linux-gnu",
"s390x-linux-musl",
"sparc-linux-gnu",
"sparc64-linux-gnu",
"wasm32-freestanding-musl",
"wasm32-wasi-musl",
"x86_64-linux-gnu",
"x86_64-linux-gnux32",
"x86_64-linux-musl",
"x86_64-windows-gnu",
"x86_64-macos-none",
"x86_64-macos-none",
"x86_64-macos-none"
五 总结
非常惊人的简单:安装和交叉编译