2

我正忙着写一个应用程序,我不确定我应该使用 LGPL 还是 GPL(或者其他东西)。这是我的限制:

  1. 我的应用程序是开源的。我真的不在乎人们如何使用我的代码,只要他们的代码也是开源的。如果他们想将我的源代码用于非开源应用程序,他们必须先与我联系。
  2. 我正在使用 GPL、LGPL 和 IDGAFL 下的外部库(又名“我不提供 af*k 许可证”)。对于大多数库,我直接将它们的源代码包含在我的应用程序中。在极少数情况下,我会使用他们预先构建的库并链接到它们。
  3. 对于上述库:如果我链接到它们,我有一个包含所有源代码(包括库的代码)和 .so/.dylib/.dll 的存储库。
  4. 我有一个与预构建库一起发布的可执行文件。非预建库显然在编译期间包含在可执行文件中。

哪个许可证是最好的?此外,对于一些库,我更改了一些源代码以适合我的应用程序。这些不是对代码本身的任何重大更改,而是对包含语句、文件扩展名等的更改,例如:

来自(原始库):

#include "libx/libx.hpp"

至(我的更改):

#include "external/libx.h"

请注意不同的位置和扩展名。这是允许的吗?

4

3 回答 3

4

如果您使用的是 GPL 库,则必须使用 GPL。

我现在找不到它,但它在 GNU 页面上。

于 2012-07-04T15:03:03.480 回答
1

根据 FSF,如果您要链接到外部 GPLd 库,则您自己必须是 GPLd。

编辑(评论):话虽如此,如果您只是动态链接到所述 GPLd 库而不提供它们,则可以提出论点,不需要。然而,这不是 FSF 的立场,但据我所知,没有人在法律上质疑过他们的解释。

http://en.wikipedia.org/wiki/GNU_General_Public_License#Libraries有一些讨论。

于 2012-07-04T15:02:20.390 回答
0

上面的第 (1) 项将您锁定在 GPL 中。如果您使用 LGPL,则您允许其他人以他们可以编写商业软件或仅非 GPL 软件的方式链接您的代码。因此,基本上,如果您绝对希望基于您的代码编写的所有内容随后也都是开源的,那么您必须使用 GPL。

于 2012-07-20T01:40:09.023 回答