
如何理解Madeira的LGPL重链接义务docs/BUILDING.md合规记录完整解读【免费下载链接】MadeiraRun x86-64 Windows PC games on jailed iOS via FEX-Emu Wine DXMT项目地址: https://gitcode.com/GitHub_Trending/mad/MadeiraMadeira是一个让 iPhone非越狱运行 x86-64 Windows PC 游戏的开源项目核心组合是FEX-Emu Wine DXMT。它静态链接了 Wine、GnuTLS、FFmpeg 等多个LGPL 许可的组件由此产生一项常被忽视的义务——LGPL 重链接义务relink。本文用 5 个部分带你读懂项目里的合规记录 docs/BUILDING.md无需法律背景也能看懂。一、LGPL 重链接义务到底是什么先说结论只要你把 LGPL 库静态链接进自己的程序并分发就必须满足两个条件之一提供 LGPL 库的完整对应源码让接收方能够重新链接relink应用的手段或者提供应用的目标文件object files让对方能自己换库重链。关键细节来自 docs/LICENSING.md 的义务清单第 2 条光提供应用源码不够——只有当接收方真的能重建、重新签名并安装时源码才算数。这就是为什么源码都在仓库里不能直接划掉合规义务iOS 上的重签名是额外门槛。二、Madeira 中哪些组件触发了 LGPL 义务Madeira 的主程序是 GPL-3.0-or-later见 LICENSE但下面这些静态链接的 LGPL 组件各自携带 LGPL 义务完整清单见 docs/LICENSING.md组件版本许可说明Wine unix 侧ntdll、wineserver、win32uwine-11.4 基线 51 个提交LGPL-2.1-or-later已改回 LGPL 分支madeira-lgplGnuTLS3.8.9LGPL-2.1-or-later被 Wine 的 bcrypt/secur32/crypt32 使用Nettle / Hogweed3.10.1LGPL-3.0-or-later项目选定密码学底座GMP6.3.0LGPL-3.0-or-later项目选定大数运算FFmpeg7.1.1LGPL-2.1-or-later纯 LGPL 配置构建--disable-gpl --disable-nonfree 为什么 Wine 要用 LGPL 分支因为早期分支按 LGPL §3 转成了 GPL-3.0不可逆导致 Apple 专有转换库的附加许可无法附着。解决方案是重建 LGPL 分支全程记录在 docs/wine-lgpl-provenance.md。三、docs/BUILDING.md 是什么性质的文档打开 docs/BUILDING.md 的第一段就有答案它是LGPL 重链接义务所依赖的控制编译和安装的脚本记录reproducibility record2026-09-16。换句话说它不是普通的编译教程而是一份逐条声明哪些步骤已从零复跑过、哪些还没有的合规账本。作者在 2026-09-16 用提交8a8cabe的干净递归克隆实测过发现仅靠克隆无法构建出 App原因有两类1. 不在仓库里的输入Inputs that are not in the repository缺失输入说明获取方式toolchains/llvm-mingw-20260421-ucrt-macos-universal/122 MB 第三方交叉编译工具链官方 release 下载SHA-256 已钉死toolchains/llvm-ios-build/等为 iOS 构建的 LLVM耗时数小时按文档重建配置项已完整记录research/GPTK/Metal Shader Converter 4.0 beta 2.pkgApple 专有安装包受许可约束Apple 开发者下载渠道app/Madeira/x86_64-vcruntime/微软 VC 运行时 DLL按微软条款不是本仓库许可从vc_redist.x64.exe提取StikDebugJIT 免费 Apple ID运行时/签名要求见 README2. 子模块提交只存在于本地FEX、其嵌套的 rpmalloc fork、wine 的madeira-lgpl分支、dxmt——这些提交尚未推到远端 fork接收方的递归克隆会在第一个子模块就失败。文档自我定位为补救措施the remediation被标记UNVERIFIED的步骤还没从零重新跑过。四、七步原生构建链重链接的手段长什么样docs/BUILDING.md 的Native build chains一节给出了完整的重链接操作路径所有脚本都在仓库内密码学栈build/gnutls-ios/build.sh从受版本钉死的源码 tarball 构建 GMP/Nettle/GnuTLS → 产出lib{gmp,nettle,hogweed,gnutls}.aFFmpegbuild/ffmpeg/build.sh从带 SHA-256 校验的发布 tarball 构建纯 LGPL 配置FEXbuild/fex-ios/build.sh与build/fex-arm64ec/build.shWineunix 侧build/ntdll-unix/build.sh等 PE 侧build/wine-pe/build-ntdll.sh含 strip/pad 到 SizeOfImage 0x50000 的特殊步骤DXMTbuild/dxmt-ios/build.shunix 侧 meson 交叉构建PE 侧原生 D3D12 运行时build/madeira-d3d12/build-pe.shApp 本体xcodebuild构建后打包 IPA 侧载安装 这些脚本正是 LGPL 语境里让接收方能重新链接的手段——源码 构建脚本 明确记录哪些已验证。五、合规现状诚实的 UNVERIFIED 标注这是整份记录最有价值的部分。docs/BUILDING.md 的Status of the LGPL relink question一节直接给出了当前状态✅已满足接收方可以从仓库获得每一个 LGPL 库Wine fork、GnuTLS、Nettle、GMP、FFmpeg的完整对应源码以及应用源码和全部构建脚本⚠️未闭环能否真正重链取决于补齐不在仓库里的输入并重跑所有 UNVERIFIED 步骤端到端的干净机器重建、签名与安装尚未执行⏸️备选路径LGPL 允许的另一条路——分发应用的目标文件object files——目前也尚未实施THIRD-PARTY-NOTICES.md 的Relinking and static linking一节确认本仓库目前未提供此类包因此在 docs/LICENSING.md 中relink 能力被明确标记为 unverified并列入公开发布前的待办事项等待律师审查。六、合规文件速查清单文件作用docs/BUILDING.md本文主角重链接义务的可复现构建记录docs/LICENSING.md组装后 App 的完整许可义务清单工作文档docs/wine-lgpl-provenance.mdWine LGPL 分支的来源与逐提交溯源THIRD-PARTY-NOTICES.md第三方组件许可明细 静态链接说明LICENSE-EXCEPTION.mdGPL-3 §7 附加许可针对 Apple 专有转换库app/Madeira/licenses/THIRD-PARTY-NOTICES.txt随 App 打包分发的许可文本副本写在最后这份记录教会我们什么Madeira 的合规实践给了开源新手三个可复用的好习惯义务要落成可执行文档——把LGPL 要求你能重链翻译成一张逐步验证的构建清单而不是停留在源码已公开诚实标注 UNVERIFIED——没做过就说没做过比假装合规更可信双路径留后手——源码脚本是主路径object files 是备选两条都没闭环时就把状态显式写进待办如果你要从零体验完整构建仓库地址为https://gitcode.com/GitHub_Trending/mad/Madeira建议先读 docs/BUILDING.md 再动手避免踩中那些不在仓库里的坑。【免费下载链接】MadeiraRun x86-64 Windows PC games on jailed iOS via FEX-Emu Wine DXMT项目地址: https://gitcode.com/GitHub_Trending/mad/Madeira创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考