我可以从封闭源应用程序链接到GPL库吗?


34

好的,在所有人大声疾呼重复问题之前,是的,我已经在这里看到过类似的几个问题。但是没有人回答这个问题。

如果我链接到GPL版本的库而不修改该库,是否需要发布源代码?

根据这个问题,答案是肯定的!

但是这个答案对我来说并不令人满意。答案基本上是说,如果不使代码开源,就无法以任何方式使用GPL代码。

但是,如果先前的说法是正确的,那么这将表明没有任何人或组织可以在Linux上发布任何专有软件。哪一定是错的。仅仅是因为为了使任何应用程序执行任何有用的操作,请打开文件,写入控制台,创建TCP连接,因此必须将应用程序链接到libcGPL版本。

所以我的问题是:如果GPL声明,如网站上所有先前的回答所述,链接到另一个GPL程序的程序必须是GPL本身,那么如何创建/发行/出售任何专有应用程序完全可以在Linux上运行?由于如上所述,该应用程序必须像GPL代码一样,才能在Linux上运行。

一个更实际的示例说,我链接到在非GPL应用程序中使用GPL编写的共享库,这会迫使非GPL应用程序成为GPL编写吗?更具体地说,如果我使用GPL库而不进行修改,然后将该库作为.so或分发.dll,这是否要求我的应用程序是开源的?


9
您一直在问相同的问题,希望得到不同的答案。您不能在非GPL兼容软件中使用GPL。死了很简单。
Andrew T

1
他真的吗?布里米 答案很简单;您为什么不与GPL计划的作者联系并询问他们是否介意?如果他们说没问题,那就太好了!如果他们反对,那么无论您觉得自己有多“正确”,试图用法律细节对他们进行武装都会使您非常不受欢迎。
詹姆斯

3
@詹姆斯:如果他们选择了GPL,它是非常强烈的声明,他们的头脑。那些不介意的人会首先选择MIT或BSD或LGPL。很少会看到完整GPL下的库。当您这样做时,几乎可以肯定这是故意的。
2012年

@Jan Maybe,取决于应用程序和john-charles的预期用途。但是我只是觉得JC如何实现这一目标很奇怪。jc只是想获得他想要的答案吗?这个站点上有许多问题可以通过“与他们交谈,大声喊出来”来解决。:-)
詹姆斯(James)

@JanHudec:我同意。我一直主张以GPL版本的库的形式发布我们公司的某些IP,因为这对我们的竞争对手基本上是无用的,但对我们的社区仍然非常有用。
MSalters 2012年

Answers:


33

如果您链接到GPL库,那么您已经创建了派生作品,并且您的代码必须是GPL-这与L GPL代码不同,后者专门允许动态链接不同许可的代码。包括libc在内的系统库都是LGPL。

Linux内核标头和libgcc(编译器隐式调用的库)也有一个特殊的豁免。


19
LGPL没有libc-您可以链接到LGPL程序。内核/系统调用也有一般豁免,因此没有论点abotu什么是系统vs库调用
Martin Beckett 2012年

6
LGPL不是新许可证,它于1991年首次发布。libc一直是LGPL。
FigBug

4
@ john-charles-这就是LGPL于1991年由gplv2发明的原因。随着Linux(以及其他FOSS内核)开始流行,这就是为什么它最初被称为Library-GPL的原因,人们担心,如果商业应用程序不能使用gcc,那么每个编译器供应商都会大量使用libc。
马丁·贝克特

1
@MartinBeckett这是FSF的意见(如果您未根据GPL进行许可,则无法链接到GPLd代码),但这并非毫无争议。尚无任何重大诉讼(据我所知,如果我错了,请纠正我)以确认FSF关于链接的意见。
K.Steff

2
@ john-charles-是的,所有普通法都经过法院的检验,但是关于版权的判例法很多。如果我声称未经修改的蝙蝠侠DVD副本不是衍生作品,因此我可以出售任意数量的商品-MPAA不太可能同意!GNU copyleft以一种非常聪明的方式使用版权来执行许可协议-从未在法庭上进行测试的原因之一是每个人都一直在和解
Martin Beckett,2012年

7

在一般情况下,您是正确的,因为您无法链接到GPL库,分发您的代码,然后不以GPL形式发布您的代码。

但是,存在“ 系统库例外”,这是人们如何链接Linux库并仍然在非GPL许可下发布其产品的方式。

另一个例外是两个许可证彼此兼容。查看FSF 兼容许可证页面以进一步阅读。

最后,GPL库的作者可以创建特定的例外,例如用于非商业或业余爱好者。

不幸的是,有太多的潜力无法制定严格的规则。如果您的问题中没有更多细节,您的答案是“可能不会,但也许可以。”


1
SLE还回答了一个程序是编译器派生工作的问题,因为它包含由编译器生成的解析器
Martin Beckett 2012年

3
不,SLE允许使用非免费工具链和标准运行时(例如Visual Studio)开发GPL代码。永远不允许将非免费应用程序与GPL库链接。
Jan Hudec

1
GPL程序的输出不包含在GPL中。参见gnu.org/licenses/gpl-faq.html#GPLOutput
Maximus

-1

简短的答案是没有人真正知道。(此讨论是关于GPL而不是LGPL的。)

GPL对“衍生作品”的用语含糊,不同的人用不同的方式解释。共识似乎是违反了静态链接,但是没有通过系统中断(例如,调用Linux内核)进行调用。后者主要基于这样的事实,即像Oracle这样的公司都在Linux上发行,并且没有被起诉-许可证中尚不清楚。

动态链接尚不清楚,可能是70/30表示违反。使用管道或远程过程调用来调用程序,即使这基本上是相同的,也可能不会违反30/70。完全不清楚是通过COM调用还是使用Java Jar。

基本上,如果有任何疑问,并且您不喜欢律师,请远离GPL。


1
GPL并不是真的那么模糊,关于什么是衍生作品,什么不是衍生作品的问题,已经进行了充分讨论的判例法。Linux syscall接口和libc之间的区别在于,前者是制作有效软件所必需的(已确认是版权的例外),而后者则不是(您可以实现自己的)。它与操作的调用方式无关,这与法律无关。肛门,这不是法律建议。
朱尔斯·

“ 70/30说违反”和“ 30/70不违反”-是否故意使违反/不违反的比例相同?“即使这本质上是同一件事”,也表明其意图是不同的。
Mateusz Konieczny
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.