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

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

问题描述

我想使用 GNU 宽松通用公共许可证,2.1 版 某些组件的 GNU 通用公共许可证 (GPL) 版本 2.

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

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();

我不会改变它,我只使用 Windows 软件的构建版本.

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

维基百科 说:

与 GPL 相关的一个关键争议是非 GPL 软件是否可以动态链接到 GPL 库.GPL 明确要求所有GPL下代码的衍生作品必须自己在 GPL 之下.虽然可以理解为静态链接产生衍生作品,它不清楚是否可执行动态链接到 GPL 代码应该被视为衍生作品(见弱 Copyleft).这免费/开源软件社区是在这个问题上分裂.FSF 声称这样的可执行文件确实是一个如果可执行文件和GPL 代码对每个其他和共享数据结构,"与某些其他人同意(例如Jerry Epplin),而一些(例如Linus Torvalds) 同意动态链接可以创建衍生作品,但不同意情况.

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.

<小时>

我真的对所有这些合法的事情感到困惑.我也会制作我的项目 LGPL 并发布源代码,但这不取决于我.


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 有一个特定的计算机编程中的意思.您根本没有链接 GPL 或 LGPL 的代码,您只是生成 GPL 或 LGPL 的二进制文件,并且 GPL 和 LGPL 允许这样做.您的用户可以根据作者的预期目的自行使用该二进制文件,并且可以自行下载和编译源代码,因此他们的所有自由都将得到保留,并且您不会违反 GPL 或 LGPL.(这就是communicat[ing] 保持距离.")这甚至没有违反 LGPL 和 GPL 的精神;他们容忍专有软件的存在,并假设在某个时候专有程序会产生免费程序,反之亦然.(否则,我们无法在 Windows 下运行任何 GPL 软件.)

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.)

GPL 确实要求专有程序和 GPL 程序不能以一种可以使它们有效地成为单个程序的方式组合在一起".如果您的程序完全依赖于 GPL 的可执行文件,即使它是一个独立的二进制文件,没有它们也无法使用,那么这可能会让您陷入困境.(而且可能是时候咨询您的律师以确认了.)

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.)

此外,尽管您没有特别询问这一点,但请记住,将 GPL 或 LGPL 的软件与您的软件一起分发意味着您需要在安装程序中包含一份许可证副本,并且还需要分发源代码.例如,如果您在安装程序中打包应用程序并在安装程序中包含 GPL 或 LGPL 可执行文件的副本,那么您正在分发 LGPL 或 GPL 代码,并且必须提供源代码的副本(在线、邮寄或 CD,具体取决于您分发应用程序的方式).包含上游项目的链接是不够的(至少对于 GPL 的第 2 版).阅读 GPL 和 LGPL 以了解详细信息.

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天全站免登陆