Android与GPL、BSD和Apache之间的关系
参考资料
Android ,在争议中逃离 Linux 内核的 GPL 约束 | 爱范儿
简介
众所周知,Linux内核基于GPL v2发行。GPL规定,基于GPL的软件产品的衍生产品,也必须使用GPL许可证。那么基于Linux操作系统所开发的应用程序,是否被认为是GPL的衍生产品?我们先来看三个问题。
- 使用Linux内核的头文件定义,进行系统调用的程序是否被认为是衍生产品?
- 链接了GPL类库的程序是否被认为是衍生产品?
- Linux的LKM(Loadable Kernel Modules)是否被认为是衍生产品?以LKM形式开发的Linux驱动程序是否被认为是衍生产品?
如果上面3个问题的答案均为“是”的话,那么基于GPL的传染性特性,从底层的内核空间到上层的用户空间的所有应用程序都将“屈服”于GPL,这将导致Linux变成了一个“封闭”的开源世界。“封闭”的原因在于它拒绝了一部分想要商业化的企业以及个人开发者。
使用Linux内核的头文件定义,进行系统调用的程序是否被认为是衍生产品?
不是!
Linux之父Linus Torvalds在源码的COPYING文件中说明与澄清了系统调用非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的底层是使用GPL的Linux内核,其上次的类库、Android运行时、应用程序框架和各类应用程序与GPL的Linux内核交互,是通过系统调用的方式,因为它们不属于衍生产品,从而不用遵循GPL。
还有一点是Android使用的是使用BSD的Bionic Libc的类库,而不是使用GPL的GNU的glibc。
Android与GPL、BSD和Apache之间的关系的更多相关文章
- android开发 系统时间与定时器之间有关系嘛?
如题: android开发 系统时间与定时器之间有关系嘛? 答案:有. 看定时器源码: /* * Schedule a task. */ private void scheduleImpl(Timer ...
- Android 中Activity,Window和View之间的关系
转自:http://hi.baidu.com/xiaofanqing/blog/item/8261ac114ab14f64cb80c435.html 我这里根据我个人的理解来讲讲我个人对这3个概念的理 ...
- 了解开源的许可证GPL、LGPL、BSD、Apache 2.0的区别 【转】
原文来自:http://blog.sina.com.cn/s/blog_6870d1e00100lhlv.html 你对开源有多少了解呢?如果你是软件开发者,要开源软件,不单单是开放源代码就可以了,选 ...
- 开源的许可证GPL、LGPL、BSD、Apache 2.0的通俗解释
软件开发者要开源软件,不单单是开放源代码就可以了,选择一种许可证很重要,一个许可证之于软件就相当于价值观之于普通人,代表了这个软件的基本品性.一个错误的许可证选择可能会直接导致整个项目的失败. 各种开 ...
- 开源的许可证GPL、LGPL、BSD、Apache 2.0
软件开发者要开源软件,不单单是开放源代码就可以了,选择一种许可证很重要,一个许可证之于软件就相当于价值观之于普通人,代表了这个软件的基本品性.一个错误的许可证选择可能会直接导致整个项目的失败.各种开源 ...
- [转]五种开源协议的比较(BSD,Apache,GPL,LGPL,MIT)
当Adobe.Microsoft.Sun等一系列巨头开始表现出对"开源"的青睐时,"开源"的时代即将到来!现今存在的开源协议很多,而经过Open Source ...
- 五种开源协议的比较(BSD,Apache,GPL,LGPL,MIT)
当Adobe.Microsoft.Sun等一系列巨头开始表现出对”开源”的青睐时,”开源”的时代即将到来!现今存在的开源协议很多,而经过Open Source Initiative组织通过批准的开源协 ...
- 转载----五种开源协议(GPL,LGPL,BSD,MIT,Apache)
原文地址:https://www.oschina.net/question/54100_9455 五种开源协议(GPL,LGPL,BSD,MIT,Apache) 什么是许可协议? 什么是许可,当你为你 ...
- 各种开源协议介绍 BSD、Apache Licence、GPL V2 、GPL V3 、LGPL、MIT_转
转自:各种开源协议介绍 BSD.Apache Licence.GPL V2 .GPL V3 .LGPL.MIT 现今存在的开源协议很多,而经过Open Source Initiative组织通过批准的 ...
随机推荐
- IIS Media Service: Channel 小结
IIS Media Service 对Channel的Schema可以在浏览器中输入http://{0}:{1}/services/smoothstreaming/publishingpoints.i ...
- IOC轻量级框架之Unity
任何事物的出现,总有它独特的原因,Unity也是如此,在Unity产生之前,我们是这么做的 我们需要在一个类A中引用另一个类B的时候,总是将类B的实例放置到类A的构造函数中,以便在初始化类A的时候,得 ...
- AspNetPager + GridView + ASP.NET AJAX 分页无刷新实现
准备资源: AspNetPager 下载网址:http://www.webdiyer.com/download/default.aspx ASP.NET AJAX 下载网址:http://www.a ...
- url添加时间戳
http://blog.csdn.net/qq_36769100/article/details/54564784 URL后面添加随机数通常用于防止客户端(浏览器)缓存页面. 浏览器缓存是基于url进 ...
- 微服务深入浅出(1)-- SpringBoot
基于Spring的开发框架,旨在简化配置快速开发,是新一代web开发框架.下面介绍一下常用的几个功能: 1.Spring单元测试 针对DAO层 (1) @RunWith(Spring.class),表 ...
- 在springMVC中使用自定义注解来进行登录拦截控制
1:java注解使用是相当频繁,特别是在搭建一些框架时,用到类的反射获取方法和属性,用的尤其多. java中元注解有四个: @Retention @Target @Document ...
- POJ 1240 Pre-Post-erous! && East Central North America 2002 (由前序后序遍历序列推出M叉树的种类)
题目链接 问题描述 : We are all familiar with pre-order, in-order and post-order traversals of binary trees. ...
- AS中一些不经常用到的快捷键
1 书签 添加/移除书签 Ctrl+shift+F11 展示书签 shift+F11 下一个书签 shift+加号 上一个书签 shift+减号 2 折叠/展开代码块 展开代码块 ctrl+加号 ...
- MySQL 执行SQL脚本 报ERROR 1231 (42000)的解决办法【转】
今天在source mysqldump 备份文件时,发现导入的过程中报如下的错误: ERROR 1231 (42000): Variable 'time_zone' can't be set to t ...
- Oracle11g用户、权限、角色、概要文件管理及审计
第10章 安全管理 1 用户管理 2 权限管理 3 角色管理 : 4 概要文件管理 5 审计 操作系统:win7 Oracle安装目录:E盘 数据库名字:orcl 密码:123456 先 ...