嵌入式Linux许可LGPL / GPL /等

时间:2011-08-09 09:42:27

标签: linux licensing embedded

我想知道如何遵守我的嵌入式Linux系统使用的各种开源软件工具和库的许可证。

我的情况如下:

我在嵌入式设备上运行嵌入式Linux系统。它使用由第三方提供的根文件系统映像以及用于开发的工具链。

我通过添加一些已编译的开源程序(在各种许可下)对根文件系统映像进行了一些修改,现在它还包含Qt(LGPL)。

我的应用程序动态链接到根文件系统上的库,并使用Qt。

使用预安装的内核,rootfs和应用程序将设备交付给最终用户。可以更新/升级包括rootfs和可能内核的应用程序。


我在Android上看到,文件及其相应的许可证只列在一个长文本文件中。是否有必要以这种方式列出所有单个文件,还是有其他方法来处理这个问题?

这通常是怎么做的?

3 个答案:

答案 0 :(得分:8)

首先,如果有可能因为获得许可证而遭受损失,那么去看看真正的律师。互联网不是一个真正的律师,如果它给你不好的建议你不能起诉互联网。

其次,我不是律师,也不是大多数人。以下是基于多年经验的事情。如果你听从我的建议,就不要怪我,这会让你失望。

第三,阅读所有许可证,并确保你明白他们在说什么。如果没有,请从我的第一点寻求澄清。

第四:

GPL / LGPL不要求向源提供应用程序。他们要求“按要求”提供来源。将其放在受密码保护的网页上,或保留副本,如果有人要求,您可以刻录到CD和邮件(可以收取CD和邮资费用)。

您有义务为您分发的任何二进制文件提供源代码,即使这些二进制文件是从第三方发送给您的。如果第三方不会向您提供其来源,那么您应该指出GPL要求或找到其他供应商。将GPL代码请求引导到上游供应商或未修改包的网页是不够的,特别是如果它来自可能修改它的第三方供应商。您需要注意将正确版本的代码与您制作的每个二进制版本进行匹配,以便为产品的任何特定版本提供源代码。

您应该归因于所有免费(和非免费)软件及其许可证。有些许可证不需要它,有些许可证(早期的BSD)可以。最好是安全而不是抱歉。这也是向用户展示各种许可证的好方法,并允许他们决定是否使用您的产品。

如果您有一个链接[L] GPL代码的专有应用程序,您将需要非常小心链接。您可能无意中将代码与病毒许可证(GPL)链接,然后如果有人注意到并要求源代码,您就会遇到麻烦。请确保您没有出于同样的原因静态链接LGPL代码(更多:Can I inline function calls to functions defined in headers of LGPL packages?)。

如果您使用的是自定义交叉编译器,还应考虑包含工具链的源代码。我不确定GPL实际上是否需要它,但这是一个混蛋动作,给某人一个源,然后让他们无法实际编译它并瞄准你的设备。我知道至少有一个供应商这样做 - 他们修改了一些语言并修补了他们的编译器。他们没有分发编译器,因此没有要求分发源代码。因此,无法使用提供的源构建以匹配目标。 AFIK他们已经停止这样做,所以我不会说出名字。

答案 1 :(得分:2)

有多种选择。您的设备是否足够大以包含所有来源?你也装CD了吗?可能不是。这意味着您必须为所有来源(以及工具链,如果足够不寻常)包含下载优惠。

您不必在源文件基础上对其进行细分,但您应区分不同的软件包及其各自的许可证。毕竟,你不想暗示你已经从Linux和Qt创建了一个chimaera。您还必须澄清每个包是GPLv2还是GPLv3。然后该列表应足够小以适应rootfs;我认为从外面可以看到这个?

答案 2 :(得分:1)

This是一篇很棒的文章,介绍了如何定制流程和系统以确保遵守GPL。

请注意,GPLv2允许您提供源代码,但(根据文章)在网页上放置下载链接是不够的。您需要在“通常用于软件交换的介质”上提供源代码。