/XServer/ — SDK 三件套
| 路径 | 内容 |
|---|---|
/xs/xsbase.h | 契约头:14 符号、20 API、结构体与枚举——#include <xsbase.h> 自动拉入下两者 |
/xs/xrt_decl.h | xrt 全量公共声明(3,030 API 原型) |
/xs/libtcc.h | 嵌套编译 API 声明 |
这三颗头与二进制同版本(构建时从源树打包)——不存在"头是旧的、库是新的"这类漂移。
/tcc/ — 头文件树
| 路径 | 内容 |
|---|---|
/tcc/include/tcclib.h | TCC 运行时辅助声明 |
/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 | — | — |
sqlite | sqlite3.h 进 VFS | +272(sqlite3_*) |
xtp | xtp2.h 进 VFS | +13(xtp2_*) |
sqlite xtp | 两颗头都进 | +285 |
xllm / xllm-session | 两颗头进 VFS | +98(xllm_*/xllmSession_*) |
xmail / xsmtp xpop3 ximap | xmail 头树 + 协议头 + xrt 垫片层 | +283(xrtMail*/Smtp/Pop3/Imap*) |
md4c | md4c.h + md4c-html.h | +2(md_parse/md_html) |
xacme | xacme 头树 + flow 头 | +20(xrtAcme*/xacmeClient*) |
qrcodegen | qrcodegen.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 文件层。