MinGW : Minimalist GNU for Windows

MinGW(Minimalist GNU For Windows)是个精简的Windows平台下的 C/C++、ADA及Fortran编译器,相比Cygwin (Cygwin是一个在windows平台上运行的类UNIX模拟环境,对于学习UNIX/Linux操作环境,或者从UNIX到Windows的应用程序移植,或者进行某些特殊的开发工作,尤其是使用GNU工具集在Windows上进行嵌入式系统开发,非常有用)  而言,体积要小很多,使用较为方便。

MinGW最大的特点就是编译出来的可执行文件能够独立在Windows上运行。

MinGW的组成
编译器(支持C、C++、ADA和Fortran)
GNU工具
mingw-get(用于Windows平台安装和部署MinGW和MSYS的命令行安装器)----??
mingw-get-inst(用于GUI打包)--------???

ref:https://www.jianshu.com/p/e9ff7b654c4a

MinGW提供了一套简单方便的Windows下的基于GCC 程序开发环境。MinGW 收集了一系列免费的Windows 使用的头文件和库文件;同时整合了GNU ( http://www.gnu.org/ )的工具集,特别是GNU 程序开发工具,如经典gcc, g++, make等。MinGW是完全免费的自由软件,它在Windows平台上模拟了Linux下GCC的开发环境,为C++的跨平台开发提供了良好基础支持,为了在Windows下工作的程序员熟悉Linux下的C++工程组织提供了条件。

-----------------------------------------------------------------------------------------------------------------

何为GNU:

GNU计划,又称革奴计划,是由Richard Stallman在1983年9月27日公开发起的。它的目标是创建一套完全自由的操作系统。GNU Project is an attempt to create an operating system and development environment that would be compatible with UNIX, but not suffer the restrictions of the proprietary UNIX name and source code.  Richard Stallman最早是在net.unix-wizards新闻组上公布该消息,并附带《GNU宣言》等解释为何发起该计划的文章,其中一个理由就是要“重现当年软件界合作互助的团结精神”。为保证GNU软件可以自由地“使用、复制、修改和发布”,所有GNU软件都有一份 在禁止其他人添加任何限制的情况下,授权所有的权利给任何人的协议条款,GNU通用公共许可证(GNU General Public License,GPL)。即“反版权”(或称Copyleft)概念。

1985年Richard Stallman又创立了自由软件基金会(Free Software Foundation)来为GNU计划提供技术、法律以及财政支持。尽管GNU计划大部分时候是由个人自愿无偿贡献,但FSF有时还是会聘请程序员帮助编写。当GNU计划开始逐渐获得成功时,一些商业公司开始介入开发和技术支持。

到了1990年,GNU计划已经开发出的软件包括了一个功能强大的文字编辑器Emacs 。GCC(GNU Compiler Collection,GNU编译器集合),是一套由 GNU 开发的编程语言编译器。以及大部分UNIX系统的的程序库和工具。唯一依然没有完成的重要组件就是操作系统的内核(称为HURD)。

1991年Linus Torvalds编写出了与UNIX兼容的Linux操作系统内核并在GPL条款下发布。Linux之后在网上广泛流传,许多程序员参与了开发与修改。1992年Linux与其他GNU软件结合,完全自由的操作系统正式诞生。该操作系统往往被称为“GNU/Linux”或简称Linux。(尽管如此GNU计划自己的内核Hurd依然在开发中,已经发布Beta版本。)

许多UNIX系统上也安装了GNU软件,因为GNU软件的质量比之前UNIX的软件还要好。GNU工具还被广泛地移植到Windows和Mac OS上。

GNU 包含3个协议条款:

(a) GPL:GNU通用公共许可证(GNU General Public License

GPL v3的官方说明:http://www.gnu.org/licenses/gpl-3.0.html,GPL要求软件以源代码的形式发布,并规定任何用户能够以源代码的形式将软件复制或发布给别的用户, 如果用户的软件使用了受 GPL 保护的任何软件的一部分,那么该软件就继承了 GPL 软件,并因此而成为 GPL 软件,也就是说必须随应用程序一起发布源代码, GPL 并不排斥对自由软件进行商业性质的包装和发行,也不限制在自由软件的基础上打包发行其他非自由软件(没明白!)

(b)LGPL:GNU较宽松公共许可证 (GNU Lesser General Public License ) 

由于GPL很难被商业软件所应用,它要求调用它的库的代码也得GPL,全部开放,并且一同发布,不能直接连接。所以后来GNU推出了LGPL许可证。在GPL与LGPL许可证保护下发布源代码的结果很相似,对旧代码所做的任何修改,对于想知道这些代码的人必须是公开的,唯一真正的不同之处在于私人版权代码是否可以与开放源代码相互连接,LGPL允许实体连接私人代码到开放源代码,并可以在任何形式下发布这些合成的二进制代码。只要这些代码是动态连接的就没有限制(???)。(使用动态链接时,即使是程序在运行中调用函数库中的函数时,应用程序本身和函数库也是不同的实体)

(c) GFDL : GNU自由文档许可证(GNU Free Documentation License )的缩写形式。

最新文章

  1. Linux 安装记录
  2. CSS3的calc()使用
  3. GMF:如何让网格显示在background,而不是foreground
  4. 从零开始学习Node.js例子四 多页面实现数学运算 续二(client端和server端)
  5. HBase 实战(1)--HBase的数据导入方式
  6. canvas像素操作
  7. QQ空间开放平台开发教程-SDK和API的使用
  8. windows 创建服务提示失败 5 拒绝 访问拒绝
  9. HDU5727 Necklace
  10. lua for通过循环table一些差异
  11. Docker Centos6 下建立 Docker 桥接网络
  12. [Nuget]Nuget命令行工具安装
  13. Linq基础+Lambda表达式对数据库的增删改及简单查询
  14. Java基于opencv实现图像数字识别(三)—灰度化和二值化
  15. Jmeter+ant集成接口测试报告
  16. Spring Boot 项目中常见注解
  17. JZ2440 裸机驱动 第7章 内存管理单元MMU
  18. 【BZOJ3745】Norma [分治]
  19. 在LoadRunner中从数组类型的参数随机取值的方法
  20. error LNK2019: unresolved external symbol 的一个解决方法

热门文章

  1. strtok在keil中使用小笔记及字符串转换为多个浮点数的方法
  2. Python爬虫 | re正则表达式解析html页面
  3. ROM
  4. Redis的订阅、事务、持久化
  5. Lightning Web Components 组合(五)
  6. 2019qbxt游记
  7. 洛谷P1043数字游戏
  8. git sh.exe 乱码
  9. 因在缓存对象中增加字段,而导致Redis中取出缓存转化成Java对象时出现反序列化失败的问题
  10. js注册表单中实现地区选择效果