@ai-ecoverse/wasm-emscripten

中文文档
6.0.9-31发布于 2026/10/23MIT构建来源已验证近 30 天下载 4399

C和C++到WebAssembly 编译器(emcc),运行在等效平通上.

中文使用文档
文档目录6 节
  1. 伴侣
  2. 默认链接( wasm 域)
  3. CACHE 模式
  4. SLIC 补丁( 9月 + homecoop)
  5. 仅包补丁( E) package-patches/ ,自6.0.9-27起
  6. 图标

@ai-ecoverse/wasm-emscripten (英语)

标记 6.0.9-基特语 对SLICC的原地。 启动器运行 emcc.py (和朋友们) @ai-ecoverse/wasix-python (单位:千美元)python3 -S与 EM_CONFIG 指向这个包的配置 .

emcc 尚未运行于 slic- 内核 (通过路径执行胶水,没有) node,参见 块状内核# 390。 。 。 . 从6.0.9-18起,同伴就在这个包裹(npm, slic's)旁边找到 ipk add -g, pnpm 虚拟存储器) 而不是仅放在下面 /shared/lib/node_modules。 。 。 .

伴侣

软件包作用
@ai-ecoverse/wasix-python运行的活字 em*.py
@ai-ecoverse/wasm-clangLLVM_ROOT (clang/ wasm-ld) (英语)
@ai-ecoverse/wasm-binaryenBINARYEN_ROOT (wam -opt, ... ) (wasm -opt, ...) (wasm
@ai-ecoverse/emscripten-cache只读预建 sysroot/
[email protected]系统 node 无害环境管理/过渡法compiler.mjs, (...) (中文(简体) )
[email protected]无法重建时的倒转路径
acorn 编号 : acorn-import-phasesJS 优化器acorn-optimizer.mjs(中文(简体) )

可执行链接( 不) -c 编号 : -r 编号 : -shared) 注射 homescoop_em_cli_ldflags (单位:千美元)-sENVIRONMENT=web,worker,node -sEXIT_RUNTIME=1 -sALLOW_MEMORY_GROWTH=1 -sFORCE_FILESYSTEM=1和 lib/slicc/{slicc_spawn,slicc_exec,slicc_signals,slicc_select,slicc_libc_gaps,slicc_jobs}.o 和档案 lib/slicc/libslicc_signals.a (单位:千美元)kill, (中文(简体) ), lib/slicc/libslicc_select.a (单位:千美元)poll, (中文(简体) ), pselect, (中文(简体) ), lib/slicc/libslicc_libc_gaps.a (单位:千美元)nanosleep 第8条 set*id, (中文(简体) ), lib/slicc/libslicc_jobs.a (单位:千美元)tcgetpgrp, (中文(简体) ), tcsetpgrp和 lib/slicc/libslicc_realpath.a, (中文(简体) ), 与联合来文图书馆合作 lib/slicc/{slicc-writev,slicc-linkat,slicc-uname,slicc-env}.js。 。 。 . slicc-env.js (自6.0.9-27起)只给程序环境 内核通过:没有Emscripten的占位符(USER编号 :LOGNAME=web_user, (中文(简体) ), HOME=/home/web_user, (中文(简体) ), PATH=/, (中文(简体) ), PWD=/),所以在 env -i 它们是未设置的. 选择退出 SLICC_EMCC_PLAIN=1 纯网络胶水.

-sMAIN_MODULE=1 财务报告和审定财务报表 -sLINKABLE=1 链接(自6.0.9-30起,housecoop#1678起) 将每个输入包入 --whole-archive,所以所有 libc.a 链接,以及 一个 libc 函数的每个 slic 覆盖将是一个重复的符号 。 这些 链接 lib/slicc/linkable/*.o 相反: 编译相同的6个对象 与 -fPIC (一个主要单元需要它) kill, (中文(简体) ), poll, (中文(简体) ), pselect, (中文(简体) ), nanosleep, (中文(简体) ), setuid, (中文(简体) ), setgid, (中文(简体) ), seteuid, (中文(简体) ), setegid, (中文(简体) ), setreuid, (中文(简体) ), setregid, (中文(简体) ), setresuid, (中文(简体) ), setresgid, (中文(简体) ), tcgetpgrp 财务报告和审定财务报表 tcsetpgrp 已更名 输出( o)-D<name>=slicc_linkable_<name>所以shim自己的电话在.. 对象仍然达到其版本),没有覆盖档案。 这些链接 获取 libc 版本的这些函数和 musl 版本 realpath (单位:千美元)ELOOP 40岁 符号链接如下: 没有内核信号通过 kill,无内核 poll, (中文(简体) ), pselect 或全权证书,以及 tcgetpgrp编号 :tcsetpgrp 回答 0 和 EINVAL 在终端。 {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}其他的 都默认了 {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}, 信号口罩和 raise环境 内核的过程 (小组和会议). -sMAIN_MODULE=2 财务报告和审定财务报表 -sSIDE_MODULE 没有 受到影响:像任何可执行文件一样,第一个链接,第二个链接没有被切片 默认值。 每个 -sMAIN_MODULE 链接需要 -fPIC 系统库 sysroot/lib/wasm32-emscripten/pic; 标记缓存 他们从6.0.9-7(homescoop#1699)出发,所以这些链接不需要建造 并使用只读的全局安装。 上面写着 6个 埃姆克试图把它们建入包里 失败 PermissionError。 。 。 . lib/slicc 由homecoop所编译出 :shims/slicc, (中文(简体) ), 阿帕奇-2.0; (英语); THIRD-PARTY-NOTICES.md 持有许可证. lib/slicc/slicc_main_envp.o (制作: -Dmain=slicc_tool_main和 lib/slicc/slicc_fork.o + 键 lib/slicc/slicc-fork.js (需要ASYNCIFY)为: 已运出但没有自动链接 。 叉选入 :

emcc … $SLICC_EM_LIBDIR/slicc_fork.o \
  --js-library $SLICC_EM_LIBDIR/slicc-fork.js \
  -sASYNCIFY -sASYNCIFY_STACK_SIZE=1048576 \
  -sEXPORTED_RUNTIME_METHODS=FS,ENV,callMain,sliccRunMain,sliccForkChild

根号 $PKG/emcc (制作工具链)和 $PKG/bin/emcc 是同样的自给自足的发射装置.

CACHE 模式

  • EM_CACHE =: $XDG_CACHE_HOME/emscripten 或者说 ~/.cache/emscripten (可写,用户自有)
  • 在第一次使用时, bin/em-ensure-cache 创建 $EM_CACHE/sysroot 作为 符号链接 输入 @ai-ecoverse/emscripten-cache/sysroot —— 说 无100MB 副本
  • 还复制了 stamps/sysroot_install.stamp 作为 真文件 输入 $EM_CACHE 因此, emcc 永远不再通过符号链接重新安装信头
  • js_output/ 财务报告和审定财务报表 symbol_lists/ 在用户目录中温暖(活性) ipk 重新安装)
  • FROZEN_CACHE = False 所以温暖的缓存工作; --clear-cache 跳过相通相通相通相通相通相通相通相通相通相通相通相通相通相通相通相通相通相通
  • 覆盖 EM_CACHE 必要时

SLIC 补丁( 9月 + homecoop)

  1. Wasm- realm CLI 链接默认 - 见上文;可选 SLICC_VFS_PRE_JS 仅在设定时( 节点- realm)
  2. 配置补丁 自动配置/ 配置测试跳过 NODERAWFS cLI 默认值
  3. ac_cv_build 播种 —— 说 emconfigure 套装 ac_cv_build=x86_64-pc-linux-gnu (和东道/目标) config.guess 不需要真实
  4. 不支持的关闭 —— 说 -sCLOSURE=1 编号 : --closure 以失败方式 : 关闭编译器在 SLICC 的 Emscripten 包中没有
  5. 缓存去除 —— 将不会删除一个已链接的对称 sysroot
  6. execvpe —— 说 tools/utils.py 通过 os.environ 这样配置/emmake 保留 CC=emcc

仅包补丁( E)package-patches/,自6.0.9-27起

在共享之上 patches/ (哪个) scripts/emscripten-tree.sh (单位:千美元) 申请标注cache、llvm-emscripten、hem-clang、hem-binaryen和 这个包裹 5个补丁 package-patches/ 一个来自 package-patches/libc/它们被保存 调出 patches/ 所以他们不会改变那些包的胶水 未经本人释放:

  • 0014, 符号链接绑定 (homescoop#611): (英语) FS.lookupPath 允许 40 和Linux一样,符号链接随之而来,41是 ELOOP在它之前,一条道路 总共40个 ELOOP 中.

  • 0015, (英语), slicc-env.js 在默认链接中 (homescoop#1531),作为 homescoop_em_cli_ldflags 拥有它.

  • 0016 (英语), libslicc_realpath.a 在默认链接中 (homescoop#1631) (英语), #1664:默认链接已添加 lib/slicc/libslicc_realpath.a,一个归档 其一员, slicc_realpath.o这是musl的 realpath.c 带自由字 补丁 0017,用libc的旗帜来编译. 这是在节目之后 输入和之前 libc.a,所以链接器只有在 realpath 还没有定义,然后 libc.a属于自己的 realpath 成员从不 拉入; 标记卡切的预建 libc.a 保持原样 一个程序 定义它自己的 realpath (在其来源、对象或档案中) 或者说 -l 与6.0.9-28之前一样, 6.0.9-28 (简体中文) 已添加 slicc_realpath.o 作为普通物体,它总是联系在一起,所以 一个程序得到了 duplicate symbol: realpath (# 1664) (中文(简体) ). SLICC_EMCC_PLAIN=1 链接跳过 档案,并获得musl的束缚.

  • 0018, 关闭档案和 -sMAIN_MODULE=1 (homescoop#1678): (英语) 默认链接添加 lib/slicc/libslicc_jobs.a 旁边 libslicc_realpath.a,用于 -sMAIN_MODULE=1 财务报告和审定财务报表 -sLINKABLE 链接 带 lib/slicc/linkable/<obj> 用于每个默认对象并同时离开 档案出炉. slicc_jobs.o 编译为 tcgetpgrp 财务报告和审定财务报表 tcsetpgrp 重新命名后退出; libslicc_jobs.a 每节都有一个成员, slicc_tcgetpgrp.o 财务报告和审定财务报表 slicc_tcsetpgrp.o,每个 slicc_jobs.c 与 每个其他全局重命名,所以链接器只拉出每个,而其 符号未定义,而程序本身 tcsetpgrp 赢了 免费的 tcsetpgrp 还不够,它通过标注 TIOCSPGRP ioctl,这是 EINVAL 在每一个终端上,永远不要到达内核. 如果成员定义了全局性对象, build.sh 失败 定义,或如果 linkable 对象仍然定义 libc 中的一个.

  • 0019,其他的档案 (homescoop#1724):默认链接 还添加 lib/slicc/libslicc_signals.a, (中文(简体) ), libslicc_select.a 财务报告和审定财务报表 libslicc_libc_gaps.a。 。 。 . slicc_signals.o, (中文(简体) ), slicc_select.o 财务报告和审定财务报表 slicc_libc_gaps.o 以它们覆盖的12个 libc 函数编译 已更名 <object>_<name> (单位:千美元)slicc_signals_kill, (中文(简体) ), slicc_select_poll, (中文(简体) ), slicc_libc_gaps_setuid每个档案员, slicc_<name>.o,是一个 单行函数 <name> 这叫重新命名的定义,所以 链接器仅在程序离开时拉出一个成员 <name> 未定义, 和定义自己的程序 kill, (中文(简体) ), poll, (中文(简体) ), pselect, (中文(简体) ), nanosleep 或者说 set*id 链接和运行自己的; 直至6.0.9-30 12 在总是相连的对象中是强烈的定义,所以它得到了 duplicate symbol。成员只依靠始终相连的物体, 从来没有彼此,所以一个程序自己的 poll 留下残片 pselect 已经就位。 他们自己的电话slicc_exec.o 电话 kill(中文(简体) ) 通过符号,所以当程序有 。如果普通对象仍然定义了覆盖,或 成员定义除了自己的符号以外的任何东西.

  • libc/0017, 穆斯尔的正轨约束 (homescoop#1631): 穆斯尔停止在 ++cnt == SYMLOOP_MAX这样 realpath() 一条完全40个共鸣的路径 以下为 ELOOP 即使是在0014 固定之后 open() 财务报告和审定财务报表 stat()0017 创造 这个 cnt++ == SYMLOOP_MAX:40跟随决心,41是 ELOOP,作为 (原始内容存档于2019-09-21). in glibc.

build.sh将0014-0016、0018和0019适用于所运出树木及其连接的树木 准备节目. package-patches/libc/ 适用于已发运的 只有树,所以PRESTAGE主机树在上游构造相同 libc.a 那个 (c) 然后检查40分的开放、静态和真人状态 和41个有默认链条的接踵而来 没有 libslicc_realpath.a 现实仍然如此 ELOOP 在40岁时, 和汉姆・克朗, 汉姆・比那利安和克麦接他们 他们自己的下次发布, 或者后来的一波折叠到 patches/。 。 。 .

自6.0.9-29起,PRESTAGE还链接了定义自己的程序 realpath:在程序的源,在后期对象,在存档和 结束 -l。每个链接必须连接默认链接并运行自己的链接 realpath还检查了6.0.9-28的形状, slicc_realpath.o 作为普通对象 除了一个程序自己的 realpath,仍然给 duplicate symbol: realpath (homescoop#1664) (英语).

自6.0.9-30 预告链接 jobs.c (真实的,不相同的, tcgetpgrp(0) 财务报告和审定财务报表 tcsetpgrp(0, getpid()))带有默认链接(tcgetpgrp self tcsetpgrp 0 ok; 无 libslicc_jobs.a 这是利布克的 0 财务报告和审定财务报表 EINVAL),与 -sMAIN_MODULE=1 并带有 -sLINKABLE=1,然后各运行;最后两个必须 回答 libc 语句 0 财务报告和审定财务报表 EINVAL 和导出 slicc_linkable_kill,该 默认链接的原型不能有 。 连接 own-tc.c,定义其 拥有 tcsetpgrp,并运行自己的。 6.0.9-29级 lib/slicc (单位:千美元)slicc_jobs.o 兼有两处覆盖,没有 linkable/)必须给予 duplicate symbol: tcsetpgrp 页:1 own-tc.c 和失败 -sMAIN_MODULE=1 财务报告和审定财务报表 -sLINKABLE=1 链接 (homescoop#1678) (英语).

自6.0.9-31 预告链接 own-libc.c,它要求所有12个 kill, (中文(简体) ), poll, (中文(简体) ), pselect, (中文(简体) ), nanosleep 第8条 set*id,带有 --pre-js 立体内核,并打印每个字,无论是块块、块块块或块块 程序自己的版本已回答。 默认链接必须打印 slicc 页:1 全部12个(和 libc 在没有三个档案的12人中。 定义任何 其中之一在程序的来源,或 poll 财务报告和审定财务报表 nanosleep 它本身 -l 归档,必须链接和打印 own 这些和 slicc 剩下的钱. 以 6.0.9-30 的平地物体 12 个给予 duplicate symbol: <name> (homescoop#1724) (中文(简体) ). priv.c 检查特权下降是否真的发生:作为根,带有 持有证书的内核, setgid(5), (中文(简体) ), setresuid(6, 0, 6) 财务报告和审定财务报表 setuid(5) 必须改变什么 getgid, (中文(简体) ), getresuid, (中文(简体) ), getuid 财务报告和审定财务报表 geteuid 报告。 无 libslicc_libc_gaps.a, libc 的根根返回 - 1 并留下每张id在0, 所以行失败.

图标

emcc, (中文(简体) ), em++, (中文(简体) ), emar, (中文(简体) ), emranlib, (中文(简体) ), emcmake, (中文(简体) ), emconfigure, (中文(简体) ), emmake, (中文(简体) ), embuilder, (中文(简体) ), em-config, (中文(简体) ), emscan-deps

emcc hello.c -o hello.js    # runnable in the wasm realm
emcmake cmake -S . -B build
emconfigure ./configure --host=wasm32-unknown-emscripten

版本与发布记录

@ai-ecoverse/wasm-emscripten 共发布 29 个版本,首次发布于 2026/10/01;过去 12 个月发布了 29 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
6.0.9-31latest2026/10/2315 天前
6.0.9-302026/10/2316 天前
6.0.9-292026/10/2216 天前
6.0.9-282026/10/2216 天前
6.0.9-272026/10/2216 天前
6.0.9-262026/10/2217 天前

关于 @ai-ecoverse/wasm-emscripten 的常见问题

@ai-ecoverse/wasm-emscripten 是什么?

C和C++到WebAssembly 编译器(emcc),运行在等效平通上.

如何安装 @ai-ecoverse/wasm-emscripten?

在项目目录运行 npm install @ai-ecoverse/wasm-emscripten,或使用 pnpm add / yarn add / bun add。

@ai-ecoverse/wasm-emscripten 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/ai-ecoverse__wasm-emscripten 是否存在。

@ai-ecoverse/wasm-emscripten 可以商用吗?

@ai-ecoverse/wasm-emscripten 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@ai-ecoverse/wasm-emscripten 的下载量有多少?

根据 npm 官方下载统计,@ai-ecoverse/wasm-emscripten 在 2026/10/05 – 2026/11/03 这 30 天内被下载 4,399 次,日均约 147 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@ai-ecoverse/wasm-emscripten 还在维护吗?

最新版本 6.0.9-31 发布于 2026/10/23(15 天前);至今共发布 29 个版本,其中过去 12 个月发布了 29 个;首次发布于 2026/10/01。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。