关于MySQL ++,GPL和LGPL

时间:2009-08-11 14:04:15

标签: c++ mysql gpl lgpl mysql++

MySQL ++通过LGPL获得许可,这意味着我可以发布动态链接的可执行文件而不必担心源代码不是GPL。 但是,MySQL ++会链接到libmysqlclient {_r}。{a,so}(http://tangentsoft.net/mysql++/#linkerrors),这是GPL。 正如所见,MySQL ++在技术上只是一个'包装器'(顺便说一下,一个非常好的实现包装器,不要误解我)对GPLed libmysqlclient {_r}。{a,so},如果我链接MySQL ++就像链接{的libmysqlclient _r}。{一个,所以}?

如果是这种情况,那么MySQL ++作为LGPL的目的是没有意义的,因为任何动态链接它的可执行文件必须然后链接到libmysqlclient {_r}。{a,so}。我哪里错了?

4 个答案:

答案 0 :(得分:4)

如果您的程序是根据MySQL发行版中EXCEPTIONS-CLIENT文件中列出的许可之一获得许可的,那么您的程序不必与GPL兼容即可使用MySQL客户端库。

但总的来说,是的,如果您想链接到GPL库,那么您的程序必须与GPL兼容。

答案 1 :(得分:3)

您可能需要咨询律师。我不是一个人。但是有些事情需要考虑:

  1. 在LGPL下使用MySQL ++只有在最终的工作适用于MySQL的GPL许可证时才有效,这是一个GPL +例外。因此,您的程序需要是GPL或其中一个例外许可证。其他任何事情都可能违反GPL。
  2. GPL和LGPL在分发作品时适用。我可以合法地将nVidia二进制驱动程序安装到我的计算机上的GPL内核中,因为我没有这样分发它。如果您的应用程序不是MySQL的衍生作品,则不属于MySQL的版权。如果分发您的应用程序并未违反MySQL的版权,那么您无需担心MySQL许可证的条款。律师可以告诉你派生的工作边界在哪里。 FSF声称链接可以创建衍生作品。
  3. 如果您的程序没有链接到MySQL但只针对MySQL ++,那么您的应用程序可能不是MySQL的派生工作。只要两个组件之间有足够厚的层,通常就是这样。例如,在JVM中运行的Java应用程序链接到JVM但不链接到内核。它不能被认为是内核的派生工作(*迂腐说明:大多数内核不会考虑派生的程序。但概念是相同的。)
  4. 请记住,(L)GPL的权力来自版权。如果A是B的派生作品,您需要获得B版权所有者的许可才能分发。如果不是A,则不需要分发A的许可。如果A来自B,但B来自C,A可能来自也可能不来自C.您需要得到所有版权所有者的许可才能分发他们的作品或衍生作品作品。 (L)GPL指定在什么条件下自动授予许可。

答案 2 :(得分:1)

我相信你是正确的,认为链接反对GPL库B的LGPL库A与链接GPL库相同,因此需要你的程序在GPL下。

所以我同意libmysql ++是LGPL是没有意义的,但我认为可能是这样,因为旧版本的MySQL客户端库使用是LGPL。 (现在,他们都是完整的GPL,正如你所注意到的那样)

答案 3 :(得分:1)

Oracle(neéSun,neéMySQLAB)很高兴sell您获得C API库的GPL豁免。然后,您可以将MySQL ++ DLL与您的程序一起分发,并且只受LGPL的约束。