当前位置:  技术问答>linux和unix

使用GPL开源库,如何闭源?

    来源: 互联网  发布时间:2017-05-10

    本文导语:  基于GPL的开源库做了软件,想做C/S通信系统,想保护通信协议,所以不能完全开源。所以问题: 我的项目中,用到了开源库A、B、C、D等,以及自己的协议库 M ,基本架构如下 -------------------------------          ...

基于GPL的开源库做了软件,想做C/S通信系统,想保护通信协议,所以不能完全开源。所以问题:
我的项目中,用到了开源库A、B、C、D等,以及自己的协议库 M ,基本架构如下
-------------------------------               
               app
-------------------------------
 A |  B  |  C  |  D |    M
---  ---   ---   ---   -------

如果A的开源许可证是GPL,B的许可证是LGPL,C的是类BSD,D是某闭源库,购买而来的,而M是自己的协议库。
为了让app工作,必须同时有这些库的支持,我的app都只跟下层的库进行通信交互,而库与库之间是完全独立的,没有任何交互,请问这样的软件能发布吗?ABCDM这些库能协同工作吗?还是怎么样?

本人也看过查找过不少关于开源许可证方面的资料,但是对于这里还有一丝困惑?
因为我的app才是依赖A,所以app必须遵循GPL开源我能理解,那么D和M呢,他们是被遵循GPL的软件调用,是被依赖方,所以主要困境在这里。
请不要大段复制资料,讲重点,最好能有例子帮助理解。

ps:帖子分数上限只能100?我想给200。如果帮我解决问题,后面再开一贴,再发100。

|
可以很明确的说,不行。

ABCDM中的任何一个库是GPL的,都会将app感染成GPL,app成为GPL之后,他所链接的所有库都要是GPL的。

这就是GPL的感染性。

|
A只要链接到谁了,谁就要GPL。和模块独立不独立没关系,你先说是否存在链接这个事实。存在的话那啥都别想了,老老实实去搞个商业编解码器吧。有静态链接的话那是直接碰到了GPL条例的。
就算没有链接,也不保证不出问题。我记得mediacoder当年也是被ffmpeg的人盯上了,然后作者坚称自己的ui是exe调用不是链接,结果也被杠上了。

|
只要有链接,不管谁调用谁,都会被GPL传染。

|
你这个D, M不依赖 A貌似不需要开源,而且你D,M也需要编译成库。
还有就是反正A是开源的,你可以重写,minigui一开始就是开源发布的,后面想闭源就重写了。

|
回到问题吧,没有连接关系是不用开源的。就你现在的表述情况貌似可以做到不开源。

|
为了防止被传染,不用link,用进程间通信吧

    
 
 

您可能感兴趣的文章:

  • tcmalloc内存泄露优化c++开源库下载,安装及使用介绍
  • 使用linux内核+qt开发的应用程序需要开源吗
  • 请问开源库安装后是不是可以象平常一样使用了
  • 请教查找资料和使用开源库的问题
  • 请教关于使用开源库的版权方面的问题
  • LINUX 是使用的GPL 那么我们在LINUX上开发的软件都要开源免费?
  • 使用C#开源文件实时监控工具Tail&TailUI介绍
  • 开源php中文分词系统SCWS安装和使用实例
  • PHP开源开发框架ZendFramework使用中常见问题说明及解决方案
  • Java中使用开源库JSoup解析HTML文件实例
  • 使用采用GPL发行的软件开发软件的问题
  • 使用GPL协议的动机?
  • 使用gcc编译器进行代码编译出来的程序是否遵循gpl协议
  • 关于GPL,我还是没完全参透,开发后是否要open source? 使用作为商业用途要给谁付费么?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C++ I/O 成员 tellg():使用输入流读取流指针
  • 在测试memset函数的执行效率时,分为使用Cash和不使用Cash辆种方式,该如何控制是否使用缓存?
  • C++ I/O 成员 tellp():使用输出流读取流指针
  • tcmalloc内存泄露优化c++开源库下载,安装及使用介绍 iis7站长之家
  • Python不使用print而直接输出二进制字符串
  • 请问:在使用oracle数据库作开发时,是使用pro*c作开发好些,还是使用库函数如oci等好一些啊?或者它们有什么区别或者优缺点啊?
  • Office 2010 Module模式下使用VBA Addressof
  • 急求结果!!假设一个有两个元素的信号量集S,表示了一个磁带驱动器系统,其中进程1使用磁带机A,进程2同时使用磁带机A和B,进程3使用磁带机B。
  • windows下tinyxml.dll下载安装使用(c++解析XML库)
  • c#中SAPI使用总结——SpVoice的使用方法
  • sharepoint 2010 使用STSNavigate函数实现文件下载举例
  • 使用了QWidget的程序,如何使用后台程序启动它?
  • 使用libpcap读取tcpdump抓取的文件并解析c代码实例
  • 共享内存一般是怎么使用的,是同消息队列配合使用么
  • c/c++预处理命令预#,##使用介绍
  • Jsp可否使用带有GUI的JavaBean,如何使用?
  • 在div中使用css让文字底部对齐的方法
  • asp程序使用的access在Linux下如何使用!
  • Python namedtuple(命名元组)使用实例
  • 新装的Linux使用root用户不能使用FTP?
  • MySQL Workbench的下载安装与使用教程
  • LINUX下使用Eclipse,如何使用交叉编译器?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,