最近做跨平台图形用户界面库选型,权衡很多因素后最终选择了Qt,其中一个重要因素就是Qt使用LGPL授权许可。由于本人对LGPL理解有限,始终对闭源商业软件如何发布Qt库存在疑问,其中最关心的是:发布的商业软件中是否可以包含(或附带)Qt的动态链接库(dll,so)。于是在网络上查找到如下相关资源:

官方的说法(查看原文“Qt: Making the right licensing decision”):

LGPL
The LGPL is a license agreement written (and copyrighted) by the Free Software Foundation.
The LGPL is a “copyleft” open source software license but is less restrictive than the GNU GPL.

Facts:
    The LGPL version 2.1 license was created by the Free Software Foundation and is copyrighted by them. This means that the terms cannot be changed or negotiated by us.
    Users can develop proprietary applications that dynamically link to the Qt libraries without having to release their application source code.
     All modifications that are considered “works based on the Library” must be licensed under the LGPL v. 2.1 and need to be shared with downstream recipients in source code format (i.e. contributed back). In the Qt context this means that modifications made to Qt itself must be licensed under the terms of the LGPL.
    If you are shipping an executable, you must include any data and utility programs needed for reproducing the executable (i.e. must provide components needed to recompile with a new version of the library) unless such data and utility programs are normally distributed with the major components of the operating system on which the executable runs.
    Copyrights and notices need to be maintained.

Because the LGPL is a complex legal document, we always suggest that you have your legal counsel review the license prior to beginning development work to ensure that the LGPL is appropriate for your development project. Please note that once you begin with the LGPL you cannot then convert to a commercial license due to a restriction in our commercial license agreement.

网友讨论:
Qt之LGPL授权下的阴谋?” 来自 CSDN
Freely distribute the Qt shared libraries (DLLs)?”  来自Qt官方论坛

我的结论:
闭源商业软件免费使用LGPL版的Qt必须满足如下条件:
1、不修改Qt源代码。
2、必须用动态链接的方式使用Qt库。
3、在软件版权声明中说明使用了LGPL版本的Qt、说明具体使用了那些Qt库,并确保软件使用者了解。
4、在发布的软件中包含Qt原有版权声明。

另:满足以上条件后发布的程序中可以附带Qt动态库(即打包在一个安装包中)。

参考:http://my.oschina.net/eechen/blog/66337

如何发布使用LGPL版Qt的商业软件的更多相关文章

  1. 将 ASP.NET Core 1.0 应用作为 docker 镜像发布 (Linux版)

    var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...

  2. 【故障公告】发布 .NET Core 版博客站点引起大量 500 错误

    非常抱歉,今天上午的博客站点故障给大家带来了很大的麻烦,请大家谅解.这次故障是我们发布 .NET Core 版博客站点引起的,虽然我们进行了充分的准备,但还是低估了高并发下的复杂问题. 以下是故障背景 ...

  3. 微博发布效果jq版

    大家都看过新浪微博的发状态功能,我模拟了一下类似的效果,包括发布时间,删除效果等.代码如下: <!DOCTYPE HTML> <html> <head> <m ...

  4. Mditor 发布「桌面版」了 - http://mditor.com

    简单说明 Mditor 最早只有「组件版」,随着「桌面版」的发布,Mditor 目前有两个版本: 可嵌入到任意 Web 应用的 Embed 版本,这是一桌面版的基础,Repo: https://git ...

  5. Kali Linux 发布 2019.1 版

    Kali Linux 是一个基于 Debian 的发行版,关注于高级渗透测试和安全审计并搭载各种常用工具,由 Offensive Security 维护.后者是一个提供信息安全训练的公司. 该项目于日 ...

  6. Delphi发布了社区版及Delphi 10.3展望

    http://altd.embarcadero.com/download/radstudio/10.2/delphicbuilder10_2_3__93231.iso,注册机在这里 注册号要自己去申请 ...

  7. Wacom将在CES 2015上发布全新旗舰版Cintiq

    Cintiq 27QHD和Cintiq 27QHD touch拥有宽大的工作表面,以及令人惊喜的屏幕笔触和颜色性能. 2015年1月6日,Wacom发布了Cintiq 27QHD和Cintiq 27Q ...

  8. Python 3.8测试阶段正式开始,发布Beta 1版

    上周,Python背后的团队宣布发布了Python 3.8.0b1 版本,这是Python 3.8计划的四个beta发行预览版中的第一个.此版本标志着beta阶段的开始,您可以在此阶段测试新特性,并使 ...

  9. .NET 5.0 RC2 发布,正式版即将在 11 月 .NET Conf 大会上发布

    原文:http://dwz.win/ThX 作者:Richard 翻译:精致码农-王亮 说明:本译文舍弃了少许我实在不知道如何翻译但又不是很重要的语句. 今天(10月13日)我们发布了 .NET 5. ...

随机推荐

  1. php 图形验证码的3种方法

    生成图形验证码需要使用php GD库来生成,如果你没开户GD库我们需要在php.ini文件找到extension=php_gd2.dll 去掉前面的;就行了,然后重启apache 或iis环境即可 检 ...

  2. c# 刻度:毫米 英寸 像素转换

    从目前所掌握的资料来看,c#程序中将毫米转换像素的方法无非两种: 第一种: 1: /// <summary> 2: /// 以毫米为单位的显示宽度 3: /// </summary& ...

  3. SQL Server 2012 BI 学习 第一天

    了解数据源,数据源视图,多维数据集,维度 数据源:一个数据库或者其它数据链接,SSAS不支持使用模拟功能来处理 OLAP 对象.模拟信息选择“使用服务帐户” 数据源视图:DSV是元数据的单个统一视图, ...

  4. python2.7之乱码问题(直接从我的csdn上复制粘贴过来的。。。)

    学习python一段时间了,一直没有写过博客.就从今天开始吧! python 3之后当然不存在乱码问题了.python 2的乱码问题有时就有点头疼了.(代码均为在windows下测试) 示例:保存为t ...

  5. java之其它命令

    java编译命令 javac: javac -d <目录> 源文件.java 指定存放生成的class文件的路径命令行下编译带包名的java源文件: javac -d . XX.java ...

  6. SetTimeOut jquery的作用

    1. SetTimeOut() 1.1 SetTimeOut()语法例子 1.2 用SetTimeOut()执行Function 1.3 SetTimeOut()语法例子 1.4 设定条件使SetTi ...

  7. 野指针及c++指针使用注意点

    避免野指针的产生 “野指针”的成因主要有: 1)指针变量没有被初始化.任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的,它会乱指一气.所以,指针变量在创建的同时应当被初始化,要么将指 ...

  8. http 4中 cache 头

    // head['Cache-Control']='max-age=31536000'; // head['Expires']=new Date((new Date().getTime()+99999 ...

  9. 关于 iOS10 更新后 360 云盘 的上传按钮消失的解决方案

    最近出了iOS10,作为iOS开发者,果断更新. 但是更新完后,打开自己的360云盘,发现想向云盘上传东西,但是传不了,加号按钮不见了. 经过我的研究,原因是 下面的自定义tabbar放置加号按钮的方 ...

  10. Asp.net弹出层并且有遮罩层

    长久以来,asp.net弹出层并且有遮罩层问题都是一个难以解决的问题,鉴于此,我决定写个弹出层发布出来,供大家使用... 这里的doing层是遮罩层,divLogin层是登陆层 若有其他问题请留言或邮 ...