#近期单位要搞 网络安全培训**,PPT难以实现场景演示且麻烦、老套,文字又词穷。突发奇想索性把6个场景用HTML5、CSS3、JavaScript、 C编译、封装。效果还满意。**
对不少开发者而言,Zig常常先以"一门新兴系统级语言"的面貌出现;但真正开始尝试时,遇到的第一个问题往往不是语法,而是:该下载哪个版本?Windows上是否需要安装Visual Studio?解压后为什么仍然找不到zig命令?怎样确认C编译器、链接器和资源编译器已经可以正常工作?
与传统开发工具不同,Zig采用自包含压缩包方式发布,不需要复杂的安装向导,也不必单独配置庞大的编译环境。只要正确下载、完整解压并设置Path,便可以同时获得Zig编译器以及C/C++编译、链接和交叉编译能力。
本文源于一个Windows免安装EXE程序的实际封装过程,以经过项目验证的Zig 0.13.0为例,从下载、环境变量配置和版本验证开始,逐步完成第一个Zig程序、C语言程序、Windows资源文件及GUI程序的编译,并集中整理常见故障与处理方法。无论是初次接触Zig的学习者,还是希望使用轻量工具链维护C语言项目的开发者,都可以按照本文步骤搭建一套清晰、可验证、可复现的Windows开发环境。#
Zig 不仅是一门编程语言,也是一套可以编译 Zig、C 和 C++ 代码的工具链。 与许多需要安装向导、单独配置编译器和链接器的开发环境不同,Zig 的官方发行包是一个自包含压缩包:下载、完整解压、把所在目录加入 Path,即可在命令行中使用。
本文以 Windows 10/11 64 位电脑为例,详细说明 Zig 0.13.0 的下载、解压、环境变量设置、安装验证、C语言编译测试、Windows资源编译测试以及常见问题处理方法。该版本与"网络安全培训6个现场演示程序"现有构建环境保持一致,适合复现和维护该项目。


一、安装前准备
1. 确认Windows版本和处理器架构
依次打开:
设置 → 系统 → 系统信息 → 系统类型
如果显示"64位操作系统,基于x64的处理器",应下载 Windows x86_64 版本。
本文推荐的基本环境如下:
| 项目 | 建议配置 |
|---|---|
| 操作系统 | Windows 10或Windows 11,64位 |
| 处理器 | x86_64双核及以上 |
| 内存 | 最低4GB,建议8GB以上 |
| 磁盘空间 | 建议预留500MB以上 |
| 安装权限 | 用户级安装不需要管理员权限 |
| 网络 | 下载时需要;安装和编译可离线进行 |
Zig 0.13.0版本说明将Windows 10以上的x86_64平台列入支持范围。ARM64电脑应选择aarch64安装包,但如果需要复现当前网络安全培训程序,建议在普通x64 Windows开发电脑上构建。
2. 为什么使用Zig 0.13.0
Zig官网会持续发布新版本,但Zig目前仍处于1.0以前,不同版本之间可能存在命令、标准库或构建行为差异。新项目可以评估官网当前稳定版;复现既有项目时,应优先使用项目原来验证过的版本。
当前培训演示程序使用Zig 0.13.0完成编译,因此本文固定使用0.13.0,以减少因工具链版本变化导致的编译差异。
二、下载Zig 0.13.0
1. 官方下载地址(因为某些原因,下载地址访问困难。可以多试几次🙏)
- Zig官方下载中心:Download ⚡ Zig Programming Language
- Zig 0.13.0 Windows x64直接下载:https://ziglang.org/download/0.13.0/zig-windows-x86_64-0.13.0.zip
- Zig 0.13.0版本说明:0.13.0 Release Notes ⚡ The Zig Programming Language

下载后的文件名应为:
zig-windows-x86_64-0.13.0.zip
应确认下载域名为:
ziglang.org
不要从来源不明的软件下载站、网盘或群聊附件获取编译器。
2. 可选:计算下载文件的SHA256
打开PowerShell,进入下载目录后执行:
Get-FileHash -Algorithm SHA256 ".\zig-windows-x86_64-0.13.0.zip"
该命令可以计算本地压缩包的SHA256。需要严格审计时,可再与Zig官方下载页面公布的校验信息进行比对。
3. 可选:解除Windows下载标记
如果电脑启用了较严格的SmartScreen策略,可以在解压前:
- 右键单击下载的ZIP文件;
- 选择"属性";
- 如果窗口底部出现"解除锁定",勾选该选项;
- 点击"应用"和"确定"。
不要为了安装编译器直接关闭杀毒软件或单位安全防护。单位电脑出现拦截时,应由信息部门核验来源和文件哈希后再放行。
三、完整解压Zig
1. 建立开发工具目录
建议建立一个固定、简短、无中文和空格的目录,例如:
D:\DevTools
也可以使用当前用户目录:
C:\Users\你的用户名\Tools
不建议放在以下位置:
- ZIP压缩包预览窗口;
- 临时下载目录;
- 只读U盘或网络共享目录;
- 权限严格的
C:\Program Files; - 层级过深或包含特殊符号的目录。
2. 解压压缩包
右键ZIP文件,选择"全部解压",目标位置填写:
D:\DevTools
解压后通常形成:
D:\DevTools\zig-windows-x86_64-0.13.0
打开该目录,应看到:
zig.exe
lib\
doc\
LICENSE
README.md
其中 zig.exe 与 lib 文件夹必须保持原有相对位置。不要只把 zig.exe 复制到其他目录,否则可能出现无法找到标准库或工具链文件的问题。

四、把Zig加入Windows环境变量
Zig无需传统安装程序。所谓"安装",核心就是让Windows能够在任意目录找到 zig.exe。
方法一:通过Windows图形界面设置,推荐
-
按下
Win + R; -
输入
sysdm.cpl,按回车; -
打开"高级"选项卡;
-
点击"环境变量";
-
在上方"用户变量"区域找到并选中
Path; -
点击"编辑";
-
点击"新建";
-
填入包含
zig.exe的目录:D:\DevTools\zig-windows-x86_64-0.13.0
-
连续点击"确定"保存;
-
关闭已经打开的CMD、PowerShell、Windows Terminal和VS Code;
-
重新打开命令行窗口。
应添加"文件夹路径",不要添加成:
D:\DevTools\zig-windows-x86_64-0.13.0\zig.exe
用户级 Path 只对当前Windows账户生效,不需要管理员权限,通常也是开发电脑上更稳妥的选择。
方法二:使用PowerShell设置用户级Path
打开普通PowerShell,执行:
$zigPath = "D:\DevTools\zig-windows-x86_64-0.13.0"
$userPath = [Environment]::GetEnvironmentVariable("Path", "User")
if (($userPath -split ";") -notcontains $zigPath) {
[Environment]::SetEnvironmentVariable(
"Path",
"$userPath;$zigPath",
"User"
)
}
执行后关闭PowerShell,再重新打开。该命令会在路径尚不存在时加入用户环境变量,避免重复添加。
方法三:仅在当前PowerShell窗口临时使用
如果只是临时测试,不想修改永久环境变量,可以执行:
$env:Path += ";D:\DevTools\zig-windows-x86_64-0.13.0"
该设置只在当前PowerShell窗口有效,关闭窗口后自动失效。
五、验证Zig是否安装成功
重新打开CMD,依次执行:
zig version
where zig
zig env
第一条命令应输出:
0.13.0
第二条命令应显示实际调用的程序路径,例如:
D:\DevTools\zig-windows-x86_64-0.13.0\zig.exe
第三条命令会显示Zig自身路径、库目录、目标平台等环境信息。如果三条命令均可正常执行,说明Zig已经正确安装。
在PowerShell中也可以执行:
Get-Command zig
zig version
zig env
六、完成第一次Zig程序测试
建立测试目录:
mkdir D:\ZigTest
cd /d D:\ZigTest
新建 hello.zig,输入:
const std = @import("std");
pub fn main() void {
std.debug.print("Hello, Zig!\n", .{});
}
直接编译并运行:
zig run hello.zig
正常输出:
Hello, Zig!
也可以只编译:
zig build-exe hello.zig
编译完成后运行:
hello.exe
七、测试Zig的C语言编译功能
当前网络安全培训程序的Windows启动器使用原生C编写,因此还应测试 zig cc。
在 D:\ZigTest 中新建 hello.c:
#include <stdio.h>
int main(void) {
printf("Zig C compiler OK!\n");
return 0;
}
执行:
zig cc hello.c -o hello-c.exe
运行:
hello-c.exe
正常输出:
Zig C compiler OK!
进一步测试当前项目使用的Windows x64目标:
zig cc -target x86_64-windows-gnu hello.c -o hello-win64.exe
hello-win64.exe
如果程序能够正常运行,说明C编译、链接和Windows x64目标环境均可使用。
八、测试Windows资源编译器
培训演示EXE需要写入应用清单、版本号和产品说明,因此使用Zig自带的Windows资源编译器。
先执行:
zig rc --help
如果显示资源编译参数说明,说明 zig rc 可用。
项目中典型的资源编译命令为:
zig rc /c 65001 app.rc app.res
参数含义:
/c 65001:按照UTF-8代码页处理资源文件;app.rc:Windows资源源文件;app.res:生成的资源文件。
九、在VS Code中使用Zig
VS Code并不是编译所必需,但适合编辑项目中的HTML、CSS、JavaScript、C和资源文件。
官方下载地址:Download Visual Studio Code - Free AI Code Editor for Mac, Linux, Windows
安装VS Code后:
- 完全退出并重新启动VS Code,确保它读取新的
Path; - 打开"终端"→"新建终端";
- 执行
zig version; - 如果显示
0.13.0,说明VS Code终端已识别Zig。
只维护当前演示程序时,不强制安装Zig扩展。需要开发Zig源程序时,可以再安装语法高亮和ZLS语言服务。编辑C代码时,可选装Microsoft C/C++扩展,但实际编译仍由Zig完成。
十、与网络安全培训演示项目配合使用
完整开发源代码通常包含:
app.html
native_launcher.c
app.rc
app.manifest
app_html.inc
generate_embedded_html.js
其中:
app.html:六个案例和宣传页界面;native_launcher.c:本机服务和浏览器启动器;app.rc:EXE版本资源;app.manifest:Windows应用清单;app_html.inc:转换成C字节数组的内嵌页面;generate_embedded_html.js:重新生成内嵌页面的辅助脚本。
如果修改了 app.html,应先重新生成 app_html.inc,再编译EXE。生成脚本需要Node.js,但Node.js仅是开发辅助工具,不是目标电脑的运行依赖。
资源编译:
zig rc /c 65001 app.rc app.res
Windows CMD中的典型发布版编译命令:
zig cc -target x86_64-windows-gnu -O2 -s ^
-ffunction-sections -fdata-sections ^
native_launcher.c app.res ^
-o "网络安全培训演示.exe" ^
-lws2_32 -lshell32 ^
-Wl,--subsystem,windows ^
-Wl,--entry,WinMainCRTStartup ^
-Wl,--gc-sections
主要参数:
| 参数 | 作用 |
|---|---|
-target x86_64-windows-gnu |
生成Windows 64位程序 |
-O2 |
开启发布版优化 |
-s |
移除调试符号,缩小EXE |
-ffunction-sections |
将函数放入独立区段 |
-fdata-sections |
将数据放入独立区段 |
-lws2_32 |
链接Windows网络组件 |
-lshell32 |
链接Windows外壳和浏览器调用功能 |
--subsystem,windows |
生成无控制台窗口的GUI程序 |
--entry,WinMainCRTStartup |
指定Windows GUI入口 |
--gc-sections |
清理未使用代码和数据 |
编译完成后,应进一步检查:
- EXE是否为Windows x64 GUI程序;
- 页面是否已完整嵌入;
- 设置窗口能否保存单位名称、开发人员姓名和Logo;
- 本机服务是否只监听
127.0.0.1; - 安全自检是否全部通过;
- 最终EXE的SHA256是否已经记录。
十一、常见问题及处理方法
1. 提示"zig不是内部或外部命令"
执行:
where zig
如果找不到,重点检查:
Path是否指向包含zig.exe的文件夹;- 是否误把ZIP文件路径加入了
Path; - 是否只移动了
zig.exe; - 修改环境变量后是否重新打开了命令行;
- VS Code是否已经完全退出并重新启动。
2. zig version显示的不是0.13.0
执行:
where zig
如果返回多个路径,说明电脑中存在多个Zig版本。Windows会优先调用 Path 中排在前面的版本。可以把0.13.0目录移动到上方,或者删除不再使用的旧路径。
3. 双击zig.exe后窗口一闪而过
这是正常现象。Zig是命令行工具,不通过双击操作,应在CMD、PowerShell或VS Code终端中执行:
zig version
4. 提示找不到标准库或lib目录
通常是因为只复制了 zig.exe。重新完整解压官方ZIP,并保留 zig.exe、lib及其他目录的原始结构。
5. VS Code终端仍然找不到Zig
关闭所有VS Code窗口,在任务管理器中确认 Code.exe 已退出,然后重新打开。如果仍然失败,可在VS Code的CMD终端执行:
echo %PATH%
where zig
如果使用PowerShell终端,则执行:
$env:Path
Get-Command zig
检查新的Zig路径是否已经进入该终端环境。
6. 出现"Access is denied"或无法生成EXE
应检查:
- 项目是否放在只读目录;
- EXE是否正在运行并被Windows占用;
- 当前文件夹是否具有写入权限;
- 是否在ZIP预览窗口或网络共享目录中直接编译;
- 安全软件是否隔离了刚生成的EXE。
建议把项目完整复制到:
D:\Projects\SecurityTrainingDemo
关闭正在运行的旧EXE后重新编译。
7. SmartScreen或杀毒软件拦截
Zig编译生成但未使用商业代码签名证书签名的EXE,可能显示"未知发布者"。不要简单关闭安全防护。应保存源码、编译命令、编译器版本和SHA256,由本单位信息部门核验后放行;有条件时使用单位代码签名证书签名发布版EXE。
8. 中文文件名或路径引发脚本问题
Zig能够处理多数Unicode路径,但部分批处理、辅助脚本或第三方工具仍可能对中文路径支持不一致。建议开发工具和源码目录使用简短英文路径,最终交付文件可以使用中文名称。
十二、多版本管理、升级与卸载
Zig官方压缩包是自包含的,因此多个版本可以并存:
D:\DevTools\zig-0.13.0
D:\DevTools\zig-0.15.1
D:\DevTools\zig-0.16.0
实际使用哪个版本取决于 Path 的先后顺序。升级前不要直接覆盖原目录,建议:
- 把新版本解压到独立文件夹;
- 调整
Path; - 执行
zig version确认; - 重新编译并完成测试;
- 确认项目兼容后再决定是否删除旧版本。
卸载Zig时:
- 从用户环境变量
Path中删除对应目录; - 删除Zig解压文件夹;
- 重新打开命令行并执行
where zig检查。
删除开发电脑上的Zig不会影响已经编译完成的免安装EXE。
十三、安装验收清单
完成以下检查,即可认为开发环境配置成功:
- 安装包来自
ziglang.org; - 已完整解压,而不是在ZIP中直接运行;
-
zig.exe与lib目录保持原始结构; - Zig目录已加入用户级
Path; -
zig version显示0.13.0; -
where zig指向预期目录; -
zig env能够正常输出环境信息; -
zig run hello.zig测试通过; -
zig cc hello.c -o hello-c.exe测试通过; -
zig rc --help能够显示资源编译帮助; - VS Code新终端能够识别
zig命令; - 已记录编译器版本、编译命令和最终EXE的SHA256。
结语
Zig在Windows上的安装并不复杂:从官网下载与项目匹配的压缩包,完整解压到固定目录,把包含 zig.exe 的文件夹加入用户级 Path,再通过 zig version、zig cc和 zig rc完成验证即可。
对于网络安全培训演示程序,Zig的价值主要不在于让培训电脑增加一套运行环境,而在于开发阶段把HTML交互页面、本机服务、Windows资源和C启动器封装成一个可离线运行的x64 EXE。开发工具留在开发电脑,培训电脑只保留经过核验的交付包,能够兼顾维护便利、现场操作和安全边界。
(整理不易,若本文对你有所帮助,欢迎点赞、关注;如有疑问或建议,也期待与你交流探讨!
)

