Madeira的LGPL静态链接合规全解析:GnuTLS、GMP与Nettle的重链接义务

发布时间:2026/10/4 7:52:30
Madeira的LGPL静态链接合规全解析:GnuTLS、GMP与Nettle的重链接义务
Madeira的LGPL静态链接合规全解析GnuTLS、GMP与Nettle的重链接义务【免费下载链接】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 游戏的模拟器项目基于 FEX-Emu Wine DXMT 组合它把整个 Windows 环境塞进了一个 iOS 应用里。正因为如此GnuTLS、GMP、Nettle 这三套 LGPL 加密/数学库被静态链接进了应用二进制随之而来的对应源码 重链接手段义务就成了它开源合规的核心难题。这篇文章把仓库中已有的合规措施逐一拆解帮你看懂 LGPL 静态链接到底要求什么、Madeira 做到了哪一步。一、为什么 LGPL 静态链接是最重的义务LGPL 与 GPL 最大的差别在于它允许专有程序动态链接使用。但静态链接会让你的应用与库合并成组合作品LGPL-2.1 第 6 条 / LGPL-3.0 第 4 条随即触发一串义务显著声明使用了哪些 LGPL 库并附 LGPL 许可证全文提供库的完整对应源码提供可重链接的形式——应用源码或目标文件让用户能换一个修改过的库版本重新链接允许用户为调试目的反向工程组合作品。Madeira 自己整体采用 GPL-3.0-or-later见 LICENSE 与 app/Madeira/legal/LICENSE而 GPL 明确允许组合作品以 GPL 条款分发 LGPL 库所以许可证选择本身没有冲突——真正的难点全在重链接义务上。二、静态链接进二进制的三套 LGPL 库项目把四个编译好的静态库直接提交进了仓库它们就是义务的载体库版本许可证静态库文件GnuTLS3.8.9LGPL-2.1-or-laterlibgnutls.aGMP6.3.0LGPL-3.0-or-later / GPL-2.0 双许可选择 LGPL-3.0libgmp.aNettle3.10.1同上选择 LGPL-3.0libnettle.aHogweed3.10.1同上选择 LGPL-3.0libhogweed.a它们的作用是给 Wine 的 bcrypt / secur32 / crypt32 提供 TLS 与密码学能力。许可选择election被明确记录在随包分发的 app/Madeira/licenses/THIRD-PARTY-NOTICES.txt 中GMP 和 Nettle 属于双许可项目Madeira 白纸黑字声明选 LGPL-3.0 一侧避免误触发 GPL。三、对应源码为什么连源码压缩包都提交进仓库LGPL 要求提供库的完整对应源码。由于静态库是编译好的二进制Madeira 采取了一个很硬核的做法——把构建用的上游源码 tarball 本身也提交进仓库build/gnutls-ios/src/gmp-6.3.0.tar.xzbuild/gnutls-ios/src/nettle-3.10.1.tar.gzbuild/gnutls-ios/src/gnutls-3.8.9.tar.xzbuild/gnutls-ios/src/SHA256SUMS校验和build/gnutls-ios/build.sh完整的构建脚本与 configure 参数三份源码均为未打补丁的上游原版。项目文档特别解释光放一个指向上游的链接是不够的所以 tarball 必须随仓库提供见 app/Madeira/legal/THIRD-PARTY-NOTICES.md 的Corresponding source一节。四、最难的一环重链接手段与当前状态这是全仓库最坦诚也最关键的一段话出自 app/Madeira/legal/THIRD-PARTY-NOTICES.md仅提供库的源码并不满足重链接义务……本仓库目前尚未提供这样的可重链接的包。义务的边界还被讲得非常清楚只发布代码仓库 ≠ 分发组合二进制问题不产生但把编译好的 .ipa 交给测试者 分发义务立刻生效每个交给测试者的 .ipa都应在对应 commit 上附上完整源码和可复现的构建/签名说明。而用户能否真正重链接取决于能否从零复现整个构建。docs/BUILDING.md 就是 LGPL 所说的控制编译与安装的脚本记录它列出仓库外的必需输入LLVM iOS 工具链、MinGW 工具链、微软 VC 运行时等和每步是否已验证并在结尾承认端到端的干净机器重建、签名与安装尚未完成作为 LGPL 提供的替代方案——分发应用的目标文件——也尚未实施。docs/LICENSING.md 则把义务 2LGPL 静态链接组件整理成清单LGPL-2.1 的重链接要求适用于 Wine、GnuTLS、FFmpegLGPL-3 的 Nettle、Hogweed、GMP 若选 LGPL-3 还需按 GPL-3 第 6 条提供安装信息Installation Information而越狱/侧载 iOS 应用是否满足该条件留待法务审查。五、合规措施速览 仓库里已经做到的许可证文本随包分发app/Madeira/licenses/ 内含 LGPL-2.1.txt、LGPL-3.0.txt 和第三方声明上游版权声明保留约 2700 个 build/ 下文件保留上游版权头见 docs/wine-lgpl-provenance.md构建脚本 SHA-256 校验和可复现四个 .a 文件诚实披露未完成项重链接能力标记为未验证而非宣称已完全合规。⚠️ 仍未解决的干净机器从零重建/重链接/安装的全链路测试作为替代方案的分发应用目标文件object files包项目文档自述正式发布前需开源法务审查。六、给其他开发者的启示Madeira 的案例是静态链接 LGPL合规教科书许可证选择要写明、源码要可验证tarball 校验和 构建脚本三件套、义务边界要写清楚发布源码 vs 分发二进制、未完成项要如实标注。相比之下它的 Wine 分支还专门走了一次 LGPL→GPL 转换再回退的许可工程只为保留与专有组件兼容的空间。对于任何把 LGPL 库打进发布二进制的 iOS/macOS 项目这些都是值得直接抄作业的清单。【免费下载链接】MadeiraRun x86-64 Windows PC games on jailed iOS via FEX-Emu Wine DXMT项目地址: https://gitcode.com/GitHub_Trending/mad/Madeira创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考