[Artoolkit] Can I Use LGPL code for commercial application

这是一个比较普遍但又容易被忽略的问题。
From: http://answers.google.com/answers/threadview/id/439136.html
假设背景:
- want to write a commercial (shareware) application; this is a mix of Objective-C and C code
- want to use a library released under the LGPL; do not own the library code, and will not modify the library code; will only use its API and functions; assume a c, obj-c or c++ coded library
- want to keep commercial application closed-source (at least as much as possible)
我的疑问:
- can the LGPL library be used in a commercial application in the context described above
- what are the implications of
a) statically linking the library to the application
b) dynamically linking the library with the application
with regards to distribution of the completed code
- how can the completed application/code be distributed (with or without the library when linked dynamically? ie what's allowed/needed)
- what are the complete requirements to using the LGPL'ed library when distributing the application (eg. attribution in documentation, availability of original library source code, etc... what else?) Extra points if you provide on/off-line (online preferred) references
that support the information provided in your answer and/or that
provide insights on the concerns listed above, and more if you can
provide a clear, easy to understand explanation of sections 5 & 6 of
the LGPL document (keeping in mind the above context), which seem to
simply contradict themselves.
Situation:
Your own C / C++ source code using an unmodified LGPL library to
produce a commercial product (with closed source code) that you can
distribute to customers (for a fee).
Q2a: What is the implication of static linking?
A2a: You need to comply with the license requirements. Eban Moglen in
http://www.spinics.net/lists/xf/msg02311.html
indicates that you are producing a "derivative work" of the code in
the library. In the United States the US Copyright Office states at
http://www.copyright.gov/circs/circ14.html
A ?derivative work,? that is, a work that is based on (or derived
from) one or more already existing works ... [copyright statements].
Both of those statements are pretty clear so section 6 of the LGPL
applies. Note that you can distribute (6a)
... [your work] as object code and/or source code, so that the user
can modify the Library and then relink to produce a modified
executable containing the modified Library
You can thus distribute object files (and protect your source code)
and still comply with the requirements of the LGPL. However, others (in particular, Richard Stallman) does not necessarily
interpret the LGPL in this way. I strongly recommend you contact the
copyright holder prior to building a statically linked application for
distribution as a commercial product. Q2b: What is the implication of dynamic linking?
A2b: That is pretty much up to you. You can decide to...
- build the application (with your copies of the library),
distribute that application without the library and expect to have
users provide their own copy of the library. In this case - YOU are
not distributing the LGPL library and thus are not bound by the
distribution terms of the LGPL license.
- build the application (with your copies of the library), and
distribute [or make available] two separate packages
o your application (binaries only)
o the matching LGPL library (binaries and source code)
In this case, I strongly suggest you clearly document what you did to
produce the LGPL library so [you and] others can reproduce it to
confirm your compliance with the LGPL terms. I also suggest you
distribute the two items separately so it is clear you are not
producing a "derived work" of the library. If you are targeting for a specific system configuration (e.g., Fedora
Core 3), I suggest an approach like the first one since it is much
less likely to cause any possible problems with compliance. The second
one is more appropriate if you want to support a range of
configurations (and perhaps want to reduce support problems due to
"almost compatible" libraries).
结论就是“可以”,只是稍微需要点"技巧"。
[Artoolkit] Can I Use LGPL code for commercial application的更多相关文章
- 本人AI知识体系导航 - AI menu
Relevant Readable Links Name Interesting topic Comment Edwin Chen 非参贝叶斯 徐亦达老板 Dirichlet Process 学习 ...
- 在linux系统中安装VSCode(Visual Studio Code)
在linux系统中安装VSCode(Visual Studio Code) 1.从官网下载压缩包(话说下载下来解压就直接可以运行了咧,都不需要make) 访问Visual Studio Code官网 ...
- How to: Synchronize Files by Using Managed Code
The examples in this topic focus on the following Sync Framework types: FileSyncProvider FileSyncOpt ...
- [转]Node.js tutorial in Visual Studio Code
本文转自:https://code.visualstudio.com/docs/nodejs/nodejs-tutorial Node.js tutorial in Visual Studio Cod ...
- How to Get the Function Code in R
http://fhqdddddd.blog.163.com/blog/static/1869915420104111031148/ http://blog.sina.com.cn/s/blog_61f ...
- 在linux系统中安装VSCode(Visual Studio Code)和图标的创建方式
本文转载自:https://www.cnblogs.com/lzpong/p/6145511.html,自己添加了一些关于依赖包安装的. 1.从官网下载压缩包(话说下载下来解压就直接可以运行了咧,都不 ...
- Top 40 Static Code Analysis Tools
https://www.softwaretestinghelp.com/tools/top-40-static-code-analysis-tools/ In this article, I have ...
- Visual Studio Code 调试 PHP
Visual Studio Code 调试 PHP 2018/12/4 更新 Nginx + php-cgi.exe 下与 Visual Studio Code 配合调试 必需环境 Visual St ...
- Integrate Your Code with the Frameworks---整合你的代码和框架
Back to Frameworks Integrate Your Code with the Frameworks When you develop an app for OS X or iOS, ...
随机推荐
- thinkphp5 学习笔记
一.开发规范: 二.API: 1.数据输出:新版的控制器输出采用 Response 类统一处理,而不是直接在控制器中进行输出,通过设置 default_return_type 就可以自动进行数据转换处 ...
- 使用Date和SimpleDateFormat类表示时间
Date类: 使用 Date 类的默认无参构造方法创建出的对象就代表当前时间,我们可以直接输出 Date 对象显示当前的时间,显示的结果如下: Date d = new Date(); System. ...
- AIX上解压缩.tar.Z, .tar.gz, .zip及.tgz
在AIX上最常见的压缩文件就是.tar檔了,而除了tar文件以外,有时会遇到数据是用其它的压缩文件格式,所以偶顺手整理了一些常见的压缩文件格式,在AIX要怎么解压缩 : · .tar.Z fil ...
- 2016年Godaddy最新域名转出教程
2016年Godaddy最新域名转出教程 http://godaddy.idcspy.com/godaddy-newest-domain-zhuanchu HostEase注册的域名转入和转出 htt ...
- EBS R12.2.4 Changing IP
[root@ebs ~]# vi /etc/hosts 127.0.0.1 localhost.localdomain localhost ::1 localhost6.loc ...
- WordPress主题开发实例:利用侧边栏工具显示联系方式
利用侧边栏显示联系方式是很方便的 一.先开启侧边栏工具,在functions.php加上 $args = array( 'name' => __( '分类侧边栏'), 'id' => 'c ...
- Hbase 命令小结
1.创建test,如果存在先删除 hbase(main)::> disable 'test' row(s) in 1.4250 seconds hbase(main)::> drop 't ...
- Ubuntu下搭建tftp服务器最简单方法
今天开始调试ARM的板子,要通过tftp下载到板子上,所以又要配置tftp服务器,真的烦死了… (本人酷爱装系统,所以经常都要搞配置) 因为之前已经在Ubuntu下搭建过很多次tftp服务器了,但是一 ...
- 在代码中设置RelativeLayout布局中标签的android:layout_toLeftOf、android:layout_toRightOf等属性
需要动态改变RelativeLayout里面控件的相对位置,经一个技术群的群友提示,找到了如下的方法,做下记录: RelativeLayout.Layoutparams params = (Rel ...
- Android解决NDK not configured问题
问题描述: // Error:Execution failed for task ':SoftkeyApp:compileDebugNdk'. // > NDK not configured. ...