LGPL规定是必须公开库源代码,编译方法,并给用户relink的权利。
也就是严格意义上用户必须能用他们喜欢的库版本替换掉你软件里的库版本。
以Windows为例
如果你动态链接了一个LGPL库,并且延迟加载(使用LoadLibrary等),用户可以随时替换掉你的dll文件,那么你只需要公开你修改的LGPL dll的源代码。如果你没修改源代码,那么你什么都不需要做。
如果你静态链接了一个LGPL库/静态链接了一个dll,那么你需要提供链接方dll/exe的obj文件,以及被链接的LGPL库源代码,这样用户可以修改LGPL库后,重新链接到你的程序上。
这是LGPL FAQ里的内容,加上部分我自己的理解。如有任何问题请指正。
在开放的平台上(如Windows,Linux,Mac OS X等桌面操作系统),平台本身不限制用户修改程序,只要你拥有管理员/root权限,你可以替换任何程序的任何部分。只要软件开发者遵守LGPL,用户就可以享受LGPL所带来的权利。
但如果目标平台是一个封闭环境,比如Windows (Phone) Store,苹果App Store,那么用户不借助一些ugly workaround(如改Windows权限,越狱iPhone/WP),实际上是没有办法享受LGPL规定的这些权利的。
这种情况下,开发者在Store app中使用LGPL库是否算违反了使用协议?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.