"简单"的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"五 总结
非常惊人的简单:安装和交叉编译