使用C ++ / Java开发用于商业目的的软件


9

我打算开发一个程序,以后打算出售。我试图确定一种语言进行编码,并且将范围缩小到C ++或Java。

我已经通过了GNU GCC和OpenJDK的GPL v2和v3许可证(是的,我可以理解一些法律知识,但显然不是全部)。但是有一点每个人都不清楚(这应该是IMO回答的第一件事):如果我使用C ++ / Java开发程序并使用GCC编译器或OpenJDK的编译器进行编译,我是否可以出售它而不必将我的程序也置于GPL下?

据我所知,我拥有为程序分配任何许可证的全部权利,但是有一个陷阱:在许可证中说,我不应该链接到GPL下的任何库。如果是这样,我将不得不在GPL下发布我的程序。

现在,我不知道C ++ / Java中的什么是库,因此,如果我使用C ++中的常规内容(iostream,list,map等)或作为标准JDK一部分的常规Java类/接口6发行版(字符串,列表,映射等),这是否构成“链接到库”?


1.我们不在这里提供法律建议。2.什么是“ C ++ / Java”?3.环顾四周,看到成千上万的用Java编写的商业软件产品,其中许多带有JNI组件。
bmargulies

1
C ++ / Java中的/只是用作“或”的缩写,这是完全有效的英语。
罗宾·格林

这听起来像是opensource.stackexchange.com的问题。(如果尚未在此处得到答复。)
Kevin Krumwiede

Answers:


13

如果我使用C ++ / Java开发程序并使用GCC编译器或OpenJDK的编译器进行编译,是否可以出售它而不必将程序也置于GPL下?

是。GPL特别排除了运行程序的输出:

仅当程序的内容构成基于程序的作品时才涉及程序的输出(与运行程序无关)。

这意味着,如果您在程序中包含GCC或其他GPL的位,则必须将其进行GPL,否则,否-其目标代码由GPLed编译器生成的事实与是否应对其进行GPL不相关。

您要链接的所有标准语言库都未进行GPL转换,或者未进行GPL转换,但是有一个特殊的例外,即如果您不对其进行修改允许您的专有软件链接到它们。对于C ++,我的意思是libgcc,glibc和libstdc ++。对于Java,我的意思是JRE中包含的所有库。

从技术上讲,您仍然可以合法销售GPL软件,但是几乎没人能从中赚钱。


LGPL(较小的GPL)允许应用程序链接到它,而不要求该应用程序本身是GPLd。另一方面,GPL库具有感染力。但是您是正确的,编译器的输出已明确排除在GPL条款之外。
Berin Loritsch 2011年

如果我修改标准语言库该怎么办?我可以做吗?那我的程序的许可证怎么办?
piotrek

然后,该例外不适用,您必须遵守相关许可的完整条款。另外,对于Java来说,也有商标的含义-最好不要在文档或广告中提及Java或OpenJDK(如果正在使用的话)(但请参阅Oracle诉Google案)。
罗宾·格林

8

GCC和OpenJDK都有明确的例外:

…当您使用GCC编译程序时,GCC可能会将某些GCC头文件和运行时库的部分与已编译的程序结合在一起。此异常的目的是允许非GPL(包括专有)程序的编译以这种方式使用此异常涵盖的头文件和运行时库。…

…当GNU Classpath未经修改地用作虚拟机,java语言的编译器或以Java编程语言编写的程序的核心类库时,它不会影响直接分发这些程序的许可……



0

OpenJDK经过GPL认证,有一个链接库的例外。http://en.wikipedia.org/wiki/OpenJDK

使用OpenJDK类将构成链接到我认为的库(rt.jar)。

从Java的角度来看,在这种情况下的库肯定是依赖项jar,war,class等。无论如何,我确定您可以合法出售Java应用程序-那里有很多Oracle / Sun尚未采取法律行动。


libstdc ++也是如此-它也有一个例外。
罗宾·格林

rt.jar和libstdc ++都是非GPL规范的实现。本质上,如果我将我的应用程序链接到非GPL版本的libstdc ++,则在两个版本中,它的功能相同(假设规范已正确实现)。平台动态加载GPL版本的库这一事实不影响您的应用程序。您写的是平台标准,并且受您想要的任何许可证的保护。
Berin Loritsch 2011年

0

不用担心,这是一个计算机编程问题,或者至少是一个与程序员密切相关的问题。

据我所知,如果您创建与某些GPL代码链接的软件,则在分发程序时必须释放源代码。

这并不意味着您必须将代码发布到sourceforge,即,但是如果第三方要求您提供代码,则必须提供它。


这一点无关紧要,因为在其他条件相同的情况下,问题中描述的活动并不涉及链接到GPL代码。
罗宾·格林

上面的问题:如果我使用C ++ / Java开发程序并使用GCC编译器或OpenJDK的编译器进行编译,是否可以出售它而不必将程序也置于GPL下?

我想我明确指出,如果您使用GPL代码,则必须发布。

抱歉,我不准确-在某些情况下确实涉及到链接到GPL代码的链接,但是例如Classpath例外适用,因此您不必在GPL下发布代码。
罗宾·格林

嗯,好吧,那不知道
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.