资讯动态

Compiler Explorer 在 Windows 上的本地安装、编译器配置与生产部署实战指南

发布时间:2026/9/20 23:39:01 来源:尧图企业网站定制
Compiler Explorer 在 Windows 上的本地安装、编译器配置与生产部署实战指南【免费下载链接】compiler-explorerRun compilers interactively from your web browser and interact with the assembly项目地址: https://gitcode.com/gh_mirrors/co/compiler-explorer本文以 Compiler Explorer下称 CE官方 Windows 部署文档 docs/WindowsNative.md 为主线系统讲解如何在 Windows 上从零搭建本地的 CE 实例从唯一前置依赖 Node.js 的安装、仓库克隆到通过 CE Properties Wizard 或手写 properties 文件两种方式接入 MSVC/clang/MinGW 编译器再到开启代码执行Execute与二进制Binary模式、使用 VSCode 断点调试以及最终构建out/dist生产分发包并直接以 Node 参数启动。读完本文你将掌握一套完整可复现的 Windows 本地运行与内网部署方案并能看懂 CE 配置系统背后对应的源码实现。前置条件唯一必需的依赖是 Node.jsCE 的 Windows 安装流程相当简单官方文档明确指出唯一的硬性前置依赖是Node.js前往 Node.js 官网获取Windows LTS 版本并完成安装同时确保npm已加入PATH环境变量。需要留意的是CE 对 Node 版本有下限要求当前仓库的 package.json 中声明了engines: { node: 22.22.1 }因此建议安装不低于该版本的 LTS避免运行时因语法或 API 差异报错。安装完成后在任意命令行进入你希望存放 CE 的目录执行git clone https://github.com/compiler-explorer/compiler-explorer.git至此源码即就位。接下来有两种方式配置你的本地编译器自动向导推荐 MSVC 场景或手工编辑配置文件。配置本地编译器自动向导与手工配置两条路径方式一使用 CE Properties Wizard 自动配置 MSVC如果你希望快速接入 MSVC 编译器官方推荐使用仓库自带的CE Properties Wizard。进入克隆后的目录执行cd compiler-explorer etc\scripts\ce-properties-wizard\run.ps1 path-to-cl.exe其中path-to-cl.exe是你 Visual Studio 安装目录下VC\Tools\MSVC\版本\bin\Hostx64\x64\cl.exe的完整路径。该向导的详细说明见 etc/scripts/ce-properties-wizard/README.md其核心能力包括自动检测根据可执行文件路径与版本命令GCC 用--version、MSVC 用/help、clang 用--version等判断编译器类型与所属语言交互式引导无参数运行即为逐步提示模式直接传路径可跳过首个提示追加--yes/--non-interactive可完全自动化组管理自动把新编译器加入合适的编译器组group.*安全更新只增不改绝不删除已有配置并在修改前创建备份文件校验对生成的 properties 文件进行验证。对 MSVC 场景向导还会做三件关键的自动配置见 README 的 MSVC Auto-Configuration 一节Demangler符号还原器从 MSVC 安装目录自动探测undname.exe按编译器架构x64/x86/arm64匹配并写入demanglerTypewin32与demanglerpath-to-undname.exeObjdumper若安装目录中存在llvm-objdump.exe则自动配置objdumperTypellvm与objdumperpath-to-llvm-objdump.exe仅在找到时才写入Windows SDK 集成自动配置 MSVC 的 include 与 library 路径若自动探测失败会交互式询问 SDK 路径也可用--sdk-path参数非交互指定。常用命令行选项还包括--id、--name、--group、--options、--language、--config-dir、--verify-only仅检测并显示编译器信息而不做任何修改与--list-types列出所有支持的编译器类型。run.ps1本身是一个轻量引导脚本它会检查uv是否安装未安装则自动下载随后执行uv sync --all-extras建立虚拟环境最后调用uv run ce-props-wizard并把所有参数透传相关实现见 etc/scripts/ce-properties-wizard/run.ps1。方式二手工编写c.local.properties配置文件向导只是帮你写配置文件CE 的编译器配置本质上是 properties 文件。官方文档给出的手工方式是复制 docs/WindowsLocal.properties 为新的etc\config\c.local.properties然后按照文件内的注释逐项修改。这份样例文件非常值得逐行研读它揭示了 CE 配置系统的核心结构# 全局 include 路径可用 echo %INCLUDE% 的结果替换 includePathc:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include;...\ATLMFC\include;...;C:\Program Files (x86)\Windows Kits\10\include\10.0.22621.0\ucrt;C:\Program Files (x86)\Windows Kits\10\include\10.0.22621.0\um;C:\Program Files (x86)\Windows Kits\10\include\10.0.22621.0\shared;... # 反汇编符号还原用开发者命令提示符中 where undname.exe 的结果替换 demanglerC:\...\undname.exe demanglerTypewin32 # 反汇编器用 where dumpbin.exe 的结果替换 objdumperC:\...\dumpbin.exe objdumperTypevc # CE 启动时默认选中的编译器 defaultCompilervc2022_64 # 编译器组声明 compilersvc2022:clang group.vc2022.compilersvc2022_32:vc2022_64 group.vc2022.options-EHsc group.vc2022.compilerTypewin32-vc group.vc2022.needsMultifalse group.vc2022.includeFlag/I group.vc2022.versionFlag/? group.vc2022.versionRe^.*Microsoft \(R\).*$ group.vc2022.groupNameVisual Studio MSVC # 具体编译器条目路径需替换为本机实际安装位置 compiler.vc2022_32.exeC:\...\bin\Hostx64\x86\cl.exe compiler.vc2022_32.nameVC 2022 x86 compiler.vc2022_32.libPath...\lib\x86;...\NETFXSDK\4.8\lib\um\x86;...\10\lib\10.0.26100.0\ucrt\x86;...\um\x86 compiler.vc2022_64.exeC:\...\bin\Hostx64\x64\cl.exe compiler.vc2022_64.nameVC 2022 amd64 compiler.vc2022_64.libPath...\lib\x64;...\NETFXSDK\4.8\lib\um\x64;...\10\lib\10.0.26100.0\ucrt\x64;...\um\x64其中关键属性说明如下属性含义样例文件中的取值includePath全局头文件搜索路径分号分隔MSVC 的include、ATLMFC\include、Windows Kits 的ucrt/um/shared/winrt等demangler/demanglerType符号还原器路径与类型win32表示 MSVC 风格undname.exewin32objdumper/objdumperType反汇编器路径与类型vc表示 dumpbindumpbin.exevcdefaultCompiler页面加载时默认选中的编译器 IDvc2022_64compilers顶层启用的编译器组列表表示引用组vc2022:clanggroup.名.compilers组内编译器 ID 列表冒号分隔vc2022_32:vc2022_64group.名.compilerType编译器实现类型见下文源码分析win32-vccompiler.id.exe/.name/.libPath单个编译器的可执行文件、显示名与库路径见样例从源码角度看这些属性在 lib/compiler-finder.ts 中被读取并转换为内部编译器对象supportsBinary默认取值为!!props(supportsBinary, true)而supportsExecute (interpreted || supportsBinary) !!props(supportsExecute, true)——也就是说只有解释型语言或支持生成二进制文件的编译器才默认具备执行能力。objdumperType则在 lib/base-compiler.ts约 L284-L285中被用来选择对应的 Objdumper 类例如lib/objdumper/llvm.ts的llvm类型会附加--x86-asm-syntaxintel参数。win32-vc编译器类型对应 lib/compilers/win32-vc.ts同类实现还有win32-mingw-gcclib/compilers/win32-mingw-gcc.ts与win32-mingw-clanglib/compilers/win32-mingw-clang.ts。若想了解更完整的配置系统可参阅 docs/Configuration.md。生产环境amazonwin中真实的 Windows 配置可参考 etc/config/c.amazonwin.properties它展示了group.clang-cl.compilerTypeclang-cl、group.vcpp.compilerTypewin32-vc、demanglerTypewin32-llvm、objdumper.../objdump.exe等组合可作为手工编写大型配置时的范本。启动开发服务器npm i 与 npm run dev完成配置后进入compiler-explorer目录执行npm i npm run dev其中npm i只需首次执行之后每次启动只需npm run dev开发模式或npm start生产模式。这三个命令在 package.json 中分别定义为devcross-env NODE_ENVDEV node --no-warningsExperimentalWarning --importtsx app.ts以 tsx 直接运行 TS 入口适合日常开发支持热重载调试debugNODE_ENVDEV ... app.ts --debug官方文档建议的调试模式等价于npm run dev的调试变体start先执行webpack构建前端资源再以NODE_ENVLOCAL启动服务适合本地生产模式模拟。启动成功后控制台会出现类似如下的输出info: info: git release 96451ae8b92e420462137eaaec58f78d3cd6667b info: serving static files from static info: Listening on http://localhost:10240/ info: 此时用浏览器打开http://localhost:10240即可使用 CE。默认端口为10240可在启动参数中通过--port修改见下文生产部署一节。使用 VSCode 断点调试 CE官方文档推荐的调试方式十分轻量在 VSCode 的终端下拉菜单中选择新建一个JavaScript Debug Terminal然后在其中运行npm run devVSCode 会自动把调试器附加到进程上你便可以在服务端 TypeScript 代码中直接打断点、查看变量、单步执行无需额外配置launch.json。开启执行Execution与二进制Binary模式默认情况下 CE 只展示编译后的汇编要让它运行程序或反汇编二进制需要分别配置执行模式与二进制模式。安装 Windows SDK 并配置 include/lib 路径用 Visual C 生成可执行文件必须安装Windows SDK官方文档指向 Windows 10 SDK。安装完成后在之前讨论的c.local.properties中至少加入以下路径includePath追加Windows Kits/10/include/版本/ucrtWindows Kits/10/include/版本/sharedWindows Kits/10/include/版本/umlibPath追加以 x64 编译器为例Windows Kits/10/Lib/版本/um/x64Windows Kits/10/Lib/版本/ucrt/x64VC 安装路径/lib/x64版本需要替换为你实际安装的 SDK 版本号例如10.0.22621.0可参考 docs/WindowsLocal.properties 中的写法。若你的编译器需要支持执行还需在 properties 文件中显式设置supportsExecutetrue二进制模式接入 Windows 版 Objdump要查看二进制反汇编Binary 模式需要一个Windows 版本的 objdump。官方文档推荐使用 MingW-64 提供的 binutils含 objdump并给出两条安装注意事项使用 MingW-64安装程序时务必在安装过程中选择正确的架构使用压缩包版本时解压后需把bin文件夹加入 Windows 的PATH环境变量并且该PATH必须排在其它可能包含 objdump 的目录之前——不能只把.exe路径填进objdumper属性而不设置 PATH这样不会生效。全部安装就绪后在 properties 文件中加入supportsBinarytrue objdumperobjdump注意32 位版本的 MinGW 不支持反汇编 64 位二进制文件请按需选择匹配架构的版本。结合源码可以进一步理解这两个开关在 lib/compiler-finder.ts 中supportsBinary默认即为true!!props(supportsBinary, true)而 lib/base-compiler.ts约 L3400-L3412在启用binary/binaryObject过滤项时会检查对应编译器是否声明了supportsBinary/supportsBinaryObject否则直接拒绝该请求。objdumperobjdump表示直接使用PATH中的 binutils objdump对应lib/objdumper/binutils.ts若使用 MSVC 环境则可用dumpbin.exeobjdumperTypevc若向导探测到 LLVM 则可配置objdumperTypellvm。生产构建与部署build-dist-win.ps1 与直接启动官方文档特别说明本部署方案仅适用于本地或内网部署不面向公网网站。生产部署的推荐流程是先用脚本构建发行包再用 Node 直接启动以获得对进程参数的完全控制。构建发行包etc\scripts\build-dist-win.ps1该脚本会创建就绪即用的发行包目录out/dist/。从 etc/scripts/build-dist-win.ps1 的源码可以看到其完整流程用git describe --tags生成发布名与git rev-parse HEAD生成版本哈希写入git_hash与release_build文件复制etc、examples、views、types、package*.json到out/dist在仓库根目录执行npm install、npm run webpack打包前端静态资源与npm run ts-compile编译 TypeScript在out/dist下执行npm install --production仅安装生产依赖并清理monaco-editor、*.ts等非必需内容用node app.js --version --dist冒烟测试产物可用性在 Windows 下用Compress-Archive打包为out/dist-bin/发布名.zip同时额外产出.static.zip静态资源包。直接以 Node 参数启动构建完成后即可跳过 npm 脚本、直接用node.exe以自定义参数启动官方文档给出的示例源自 infra 仓库的run.ps1node.exe --max_old_space_size6000 -- app.js --dist --port 10240 --language c常用参数说明参数作用备注--max_old_space_sizeNode 堆内存上限单位 MB大体积编译器/多语言场景建议调大示例为 6000--dist以发行包模式运行对应从out/dist读取资源--port服务端口默认值10240--language指定启用的语言示例仅启用c可减少启动负担--env加载的环境配置对应etc/config下的环境 properties完整的可用选项可通过node app.js --help查看。配置正确性验证写完或由向导生成 properties 文件后建议用仓库自带的属性校验测试确认语法正确、无拼写问题npm run test:props该命令对应 package.json 中的test:props: vitest run --reporterdot properties-validation-tests.ts执行的校验用例位于 test/properties-validation-tests.ts。此外CE Properties Wizard 的 README 也提示若校验报告错误应先检查生成的 properties 文件是否存在语法问题再运行上述命令验证详见 etc/scripts/ce-properties-wizard/README.md 的 Troubleshooting 一节。小结在 Windows 上运行 Compiler Explorer 的完整链路可以概括为安装 Node LTS → 克隆仓库 → 用 CE Properties Wizard或手写*.local.properties接入 MSVC/clang/MinGW →npm i后以npm run dev/npm run debug启动 → 按需安装 Windows SDK 与 MinGW objdump 开启执行/二进制模式 → 用build-dist-win.ps1构建out/dist发行包并以node app.js --dist部署到内网。配置系统的底层逻辑supportsExecute/supportsBinary的默认值与依赖关系、objdumperType到具体 Objdumper 类的映射、win32-vc等编译器类型的实现都可以在 lib/compiler-finder.ts、lib/base-compiler.ts、lib/compilers/win32-vc.ts 等源码文件中进一步核实与钻研。【免费下载链接】compiler-explorerRun compilers interactively from your web browser and interact with the assembly项目地址: https://gitcode.com/gh_mirrors/co/compiler-explorer创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价