350 项资源(all 变体)· LZMA 压缩内嵌 · 与二进制同版本

VFS 内置资源参考

脚本编译所需的一切都在 exe 里——这就是"目标机零安装"的实体。构建时按变体打包:不选的扩展头不进 VFS(运行期探针验证过隔离)。

/XServer/ — SDK 三件套

路径内容
/xs/xsbase.h契约头:14 符号、20 API、结构体与枚举——#include <xsbase.h> 自动拉入下两者
/xs/xrt_decl.hxrt 全量公共声明(3,030 API 原型)
/xs/libtcc.h嵌套编译 API 声明

这三颗头与二进制同版本(构建时从源树打包)——不存在"头是旧的、库是新的"这类漂移。

/tcc/ — 头文件树

路径内容
/tcc/include/tcclib.hTCC 运行时辅助声明
/tcc/include_win/**Windows SDK 头(经保留集裁剪:含 winapi 全量与 curl)
/tcc/include_linux/**Linux 侧标准头(C99/C11 全套)

Windows 侧还有一条隐式通道:msvcrt 与 kernel32 在内存编译模式下自动挂载——脚本不用写一行链接配置就能用标准库与 Win32 基础 API。

/tcc/ — 库定义

  • /tcc/lib/*.def:kernel32、msvcrt、user32、gdi32、shell32、ole32、oleaut32、ws2_32、imm32——#pragma comment(lib, ...) 或 tcc_add_library 直接引用
  • /tcc/lib/libtcc1.a:TCC 运行时辅助库(编译器自动使用)

这套库面意味着:进程(CreateProcess)、COM(Excel 自动化)、原生 Socket、Shell 操作在脚本中直接可用——能力边界讨论见 第 44 章。

变体差异

变体额外 VFS 内容额外符号
default——
sqlitesqlite3.h 进 VFS+272(sqlite3_*)
xtpxtp2.h 进 VFS+13(xtp2_*)
sqlite xtp两颗头都进+285
xllm / xllm-session两颗头进 VFS+98(xllm_*/xllmSession_*)
xmail / xsmtp xpop3 ximapxmail 头树 + 协议头 + xrt 垫片层+283(xrtMail*/Smtp/Pop3/Imap*)
md4cmd4c.h + md4c-html.h+2(md_parse/md_html)
xacmexacme 头树 + flow 头+20(xrtAcme*/xacmeClient*)
qrcodegenqrcodegen.h + qrpng.h+10(qrcodegen_*/png)
all全部十库头树+700

隔离是严格的:default 变体下脚本 include <sqlite3.h> 会得到"找不到头文件"的编译错误,引用 sqlite3_* 符号则链接失败——未选的能力不存在于进程里,不是隐藏而是真的没有。

脚本可运行期调用 xsExtensionEnabled("名") 查询(与 --version 横幅同一数据源);xsmtp/xpop3/ximap 经 requires 自动携带 xmail;all 等价全选十库。

构建期打包器(gen_tcc_resources.py)以输入 SHA256 摘要跳过未变更的重打包;VFS 项采用 STORE / LZMA 两种存储方式按压缩收益选择。运行期操作 VFS 的 API 见 嵌套编译参考 · VFS 文件层。