我可以在我的封闭源应用程序中动态调用LGPL / GPL软件吗? [英] Can I dynamically call a LGPL/GPL software in my closed-source application?

查看:190
本文介绍了我可以在我的封闭源应用程序中动态调用LGPL / GPL软件吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想使用 ffmpeg ) /www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlrel =noreferrer> GNU Lesser General Public License,版本2.1 某些组件的GNU通用公共许可证(GPL)版本2



为此,我只在我的软件中调用它:

  System.Diagnostics.Process p = new System。 Diagnostics.Process(); 
p.StartInfo = new System.Diagnostics.ProcessStartInfo(lgplSoftware.exe,myParams);
p.Start();

我不更改它,我只使用Windows的内置版本的软件。 >




维基百科说:


与GPL有关的一个关键争议是
无论非GPL软件是否可以是
动态链接到GPL库。
GPL明确规定,GPL
下的所有
衍生代码作品本身都必须在GPL之下。
虽然可以理解静态
链接产生衍生作品,但
并不清楚动态链接到GPL代码
的可执行文件
是否应被视为衍生工具工作
(见Weak Copyleft)。
免费/开放源代码软件社区在这个问题上分摊了
。 FSF声称
,如果可执行文件和
GPL代码对其他每个
进行函数调用并共享数据结构,则这样的可执行文件确实是
派生工作,
与某些其他人同意(例如
Jerry Epplin),而一些(例如
Linus Torvalds)同意动态
链接可以创建派生作品,但
在这种情况下不同意。 p>






我真的很困惑所有这些法律事情。我会使我的项目LGPL以及发布的来源,但这不符合我。



所以问题是:我现在可以使用它,还是由一群律师执行?

解决方案

链接有一个特定的意义在计算机编程中。您根本不链接GPL或LGPL的代码,您只会产生一个GPL或LGPL的二进制文件,GPL和LGPL允许这样做。您的用户可以自由使用该二进制文件作为其作者的预期目的,并且可以自由下载和编译源代码,因此所有的自由都将被保留,而您并没有违反GPL或LGPL。 (这是 GPL常见问题正在通过交流 ])甚至不违反LGPL和GPL的精神;他们容忍专有软件的存在,并假设在某些时候,专有程序将产生免费程序,反之亦然。 (否则,我们无法在Windows下运行任何GPL的软件。)



GPL确实要求专有和GPL的程序不以某种方式组合这将使他们成为一个单一的计划。如果你的程序完全依赖于GPL的可执行文件,这样即使它是一个独立的二进制文件,它也不可用,那么可能会使你更加震撼。 (那可能是咨询您的律师找到确切的时候了。)



此外,虽然您没有具体询问这一点,但请记住,分发GPL' ed或LGPL的软件意味着您需要在安装程序中包含许可证的副本,并分发源代码。例如,如果您在安装程序中打包应用程序,并在安装程序中包含GPL或LGPL的可执行文件副本,那么您正在分发LGPL或GPL的代码,并且必须复制源代码(在线,通过邮寄优惠或CD,取决于您如何分发您的应用程序)。包括到上游项目的链接是不够的(至少对于GPL的第2版)。请阅读GPL和LGPL的具体细节。


I want to use a tool (ffmpeg) that is under GNU Lesser General Public License, version 2.1 GNU General Public License (GPL) version 2 for some components.

To do so, I only call it in my software as such:

System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo = new System.Diagnostics.ProcessStartInfo("lgplSoftware.exe", myParams);
p.Start();

I do not change it, I only use a built version of the software for windows.


Wikipedia says:

A key dispute related to the GPL is whether or not non-GPL software can be dynamically linked to GPL libraries. The GPL is clear in requiring that all derivative works of code under the GPL must themselves be under the GPL. While it is understood that static linking produces derivative works, it is not clear whether an executable that dynamically links to a GPL code should be considered a derivative work (see Weak Copyleft). The free/open-source software community is split on this issue. The FSF asserts that such an executable is indeed a derivative work if the executable and GPL code "make function calls to each other and share data structures," with certain others agreeing (e.g. Jerry Epplin), while some (e.g. Linus Torvalds) agree that dynamic linking can create derived works but disagree over the circumstances.


I am really confused by all this legal things. I would have made my project LGPL as well and released the source, but this is not up to me.

So the question is: can I use it like I'm doing right now or will I be executed by an army of lawyers?

解决方案

Linking has a specific meaning in computer programming. You're not linking GPL'ed or LGPL'ed code at all, you're only spawning a GPL'ed or LGPL'ed binary, and the GPL and LGPL permit this. Your users are free to use that binary themselves for its authors' intended purposes and are free to download and compile the source themselves, so all of their freedoms are preserved, and you're not in violation of the GPL or LGPL. (This is what the GPL FAQ is talking about by "communicat[ing] at arms length.") This doesn't even violate the spirit of the LGPL and GPL; they tolerate the existence of proprietary software and assume that at some point proprietary programs will spawn free programs and vice versa. (Otherwise, we couldn't run any GPL'ed software under Windows.)

The GPL does require that proprietary and GPL'ed programs "are not combined in a way that would make them effectively a single program." If your program is completely dependent upon GPL'ed executables, such that it wouldn't be usable without them even though it is a standalone binary, then that might place you on shakier ground. (And it's probably time to consult your lawyer to find out for sure.)

Also, although you didn't specifically ask about this, keep in mind that distributing GPL'ed or LGPL'ed software with your software means that you're required to include a copy of the license with your installer and to also distribute the source code. For example, if you package up your application in an installer and include copies of GPL'ed or LGPL'ed executables in the installer, then you're distributing LGPL'ed or GPL'ed code and must make copies of the source code available (either online, by mail-in offer, or by CD, depending on how you distribute your app). Including a link to the upstream project is not sufficient (at least for version 2 of the GPL). Read the GPL and LGPL for exact details.

这篇关于我可以在我的封闭源应用程序中动态调用LGPL / GPL软件吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆