zoukankan      html  css  js  c++  java
  • Android与GPL、BSD和Apache之间的关系

    参考资料

    Android ,在争议中逃离 Linux 内核的 GPL 约束 | 爱范儿

    简介

    众所周知,Linux内核基于GPL v2发行。GPL规定,基于GPL的软件产品的衍生产品,也必须使用GPL许可证。那么基于Linux操作系统所开发的应用程序,是否被认为是GPL的衍生产品?我们先来看三个问题。

    1. 使用Linux内核的头文件定义,进行系统调用的程序是否被认为是衍生产品?
    2. 链接了GPL类库的程序是否被认为是衍生产品?
    3. Linux的LKM(Loadable Kernel Modules)是否被认为是衍生产品?以LKM形式开发的Linux驱动程序是否被认为是衍生产品?

    如果上面3个问题的答案均为“是”的话,那么基于GPL的传染性特性,从底层的内核空间到上层的用户空间的所有应用程序都将“屈服”于GPL,这将导致Linux变成了一个“封闭”的开源世界。“封闭”的原因在于它拒绝了一部分想要商业化的企业以及个人开发者。

    使用Linux内核的头文件定义,进行系统调用的程序是否被认为是衍生产品?

    不是!
    Linux之父Linus Torvalds在源码的COPYING文件中说明与澄清了系统调用非GPL的作用范围。
    Linus关于系统调用程序与GPL的澄清

    链接了GPL类库的程序是否被认为是衍生产品?

    是!
    主程序与GPL类库如果是静态链接(Static Link)的话,那么一般认为主程序必须使用GPL;主程序与GPL类库如果是动态链接(Dynamic Link)的话,那么一般认为主程序也必须使用GPL,除非在官司上证明主程序和GPL类库之间具有独立性和可分性。
    以下是GPL官网上的FAQ:

    If a library is released under the GPL (not the LGPL), does that mean that any software which uses it has to be under the GPL or a GPL-compatible license? (#IfLibraryIsGPL)

    Yes, because the software as it is actually run includes the library.

    Linux的LKM(Loadable Kernel Modules)是否被认为是衍生产品?以LKM形式开发的Linux驱动程序是否被认为是衍生产品?

    这块不知道怎么去理解,作者也没有正面回答,详见参考资料。

    Android

    后来,一款基于Linux的手机操作系统诞生了,那就是Android。我们先来看由Openfoundry绘制的Android许可证结构图。
    Android许可证结构图

    Android的底层是使用GPL的Linux内核,其上次的类库、Android运行时、应用程序框架和各类应用程序与GPL的Linux内核交互,是通过系统调用的方式,因为它们不属于衍生产品,从而不用遵循GPL。

    还有一点是Android使用的是使用BSD的Bionic Libc的类库,而不是使用GPL的GNU的glibc。

  • 相关阅读:
    转:SVN Eclipse插件Subclipse安装和配置
    Apache、php、mysql单独安装配置
    HDU 1150:Machine Schedule(二分匹配,匈牙利算法)
    Oracle 数据的导入和导出(SID service.msc)
    swift-数组array
    wxWidgets刚開始学习的人导引(4)——wxWidgets学习资料及利用方法指导
    用php 把数组中偶数,选择出来
    java 异常 之 实战篇(trows 和 try catch Dead Code)
    语言处理程序
    使用Maven构建和部署J2EE应用程序的EAR文件
  • 原文地址:https://www.cnblogs.com/alongdidi/p/10062717.html
Copyright © 2011-2022 走看看