被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"

五 总结

非常惊人的简单:安装和交叉编译

标签: none