Windows版GCC之TDM-GCC 4.5.2

平时写 C/C++ 小程序的时候,不喜欢开VS,太庞大了,还要建项目。对于小程序,一个可以进行单文件编译的 IDE 是我的首选,我用的是 C-Free 5.0,内置编译器 MinGW,Windows 版 GCC。

前几在 C-Free 5.0 上写排序程序,想看一下大概的执行时间,于是用 C 标准库函数 clock() ,结果包含的 time.h 头文件一直不能通过编译。把源代码复制到 VS 2008 里居然顺利编译通过,猜想这应该是编译器 MinGW 的问题,忍忍吧。

前天把系统搞得一踏糟,无奈之下还原,今天找了个最新版的 MinGW 编译器,没想到 time.h 头文件的问题没了,爽。

其实我用的不是 MinGW 官方版,而是另一个发行版本 TDM-GCC,目前最新版 4.5.2,一下翻译一段介绍:

TDM-GCC是一个 Windows 版的编译器套件。
它结合了 GCC 工具集中最新的稳定发行版本,包括了自由并开源的 MinGW 或 MinGW-w64 的运行时 APIs,以此创建一个 LIBRE 来替代微软的编译器及其平台 SDK。
它可以创建自 Windows 95 以来任何 Windows 操作系统版本之上的 32 位或 64 位的二进制文件。

提供一个下载地址:http://tdm-gcc.tdragon.net/

另外在某博客上有下面一段话:

TDM (Twilight Dragon Media) 和 MinGW官方没有任何瓜葛。TDM中包的版本一般比MinGW官方版新,似乎有MinGW的成员也在用TDM版。力挺这个的人似乎也挺多。

TDM GCC 分两个版本(异常处理方式不同)

SJLJ (setjmp/longjmp) 
DW2 (Dwarf-2) 
MinGW 中采用的是后者,TDM GCC 建议首选前者。

http://www.cnblogs.com/wxxweb/archive/2011/05/30/2063434.html

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

自我说明:

TDM-GCC is pleased to present new toolchains based on GCC 5.1.0, as well as updated GDB packages for 32-bit and 64-bit native Windows.

This TDM-GCC release incorporates a few more local patches from the MinGW-w64 project's MinGW-Builds releases. Also, a 32-bit GDB is now available, and both 32-bit and 64-bit GDB automatically load GCC's libstdc++ "pretty printers", if available, to provide more readable debugging output for libstdc++ objects. See the README files included in the core and gdb packages for details on all local patches.

Please make sure to read the Quirks page for more information about the differences between TDM-GCC and other GCC toolchains.

http://tdm-gcc.tdragon.net/quirks

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

主要区别:

Static runtime linkage (libgcc & friends)
  • TDM-GCC doesn't link your programs with the libgcc or libstdc++ runtime DLLs by default.
  • Other toolchains default to DLL runtime linkage in order to allow you to throw exceptions among DLLs and EXEs.
  • TDM-GCC lets you throw exceptions among DLLs and EXEs even with the static runtime.
  • Your programs will not rely on any additional DLLs when compiling with default options.
  • TDM-GCC still includes DLL versions of the libgcc and libstdc++ runtimes, which you can enable for your program with "-shared-libgcc" and "-shared-libstdc++" if desired.

http://tdm-gcc.tdragon.net/quirks

TDM-GCC是从mingw-w64项目patch而来,全部使用静态链接,对线程不需要额外的DLL,默认使用SJLJ异常(真是好东西)的更多相关文章

  1. nginx反向代理部署springboot项目报404无法加载静态资源

    问题:nginx反向代理部署springboot项目报404无法加载静态资源(css,js,jpg,png...) springboot默认启动端口为8080,如果需要通过域名(不加端口号)直接访问s ...

  2. mingw qt(可以去掉mingwm10.dll、libgcc_s_dw2-1.dll、libstdc++-6.dll的依赖,mingw默认都是动态链接gcc的库而TDM是静态链接gcc库,tdm版本更好用。用aspack压缩没有问题。qt本身不使用异常处理)good

    原文地址:mingw qt作者:孙1东 不使用Qt SDK,使用mingw编译qt源代码所遇问题及解决方法: configure -fast -release -no-exceptions -no-r ...

  3. mingw w64的下载地址

    mingw w64的下载地址,官网下载看得太晕.直接记下下载链接. https://sourceforge.net/projects/mingw-w64/ i686纯32位版供32位win系统使用.x ...

  4. GCC编译过程与动态链接库和静态链接库

    1. 库的介绍 库是写好的现有的,成熟的,可以复用的代码.现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常. 本质上来说库是一种可执行代码的二进制形式,可 ...

  5. 鸿蒙内核源码分析(静态链接篇) | 完整小项目看透静态链接过程 | 百篇博客分析OpenHarmony源码 | v54.01

    百篇博客系列篇.本篇为: v54.xx 鸿蒙内核源码分析(静态链接篇) | 完整小项目看透静态链接过程 | 51.c.h.o 下图是一个可执行文件编译,链接的过程. 本篇将通过一个完整的小工程来阐述E ...

  6. 利用GCC编译器生成动态链接库和静态链接库

    转载请标明:http://www.cnblogs.com/winifred-tang94/ 1.编译过程 gcc –fPIC –c xxx.c 其中-fPIC是通知gcc编译器产生位置独立的目标代码. ...

  7. GCC 编译使用动态链接库和静态链接库

    1 库的分类 根据链接时期的不同,库又有静态库和动态库之分. 静态库是在链接阶段被链接的(好像是废话,但事实就是这样),所以生成的可执行文件就不受库的影响了,即使库被删除了,程序依然可以成功运行. 有 ...

  8. gcc总结【基本用法】【选项】【动静态库】(转)

    1.////////////////////////////////////////////////////////////////////////////////////////////////// ...

  9. GCC 编译使用动态链接库和静态链接库的方法

    1 库的分类 依据链接时期的不同,库又有静态库和动态库之分. 静态库是在链接阶段被链接的.所以生成的可执行文件就不受库的影响了.即使库被删除了,程序依旧能够成功执行. 有别于静态库,动态库的链接是在程 ...

随机推荐

  1. 关于python中矩阵的实现和矩阵的转置

    python中矩阵的实现是靠序列,,, 序列有很多形式, 其实矩阵是现实生活中的东西,把现实生活中的结构转换到程序中. 就需要有个实现的方法,而这种路径是多种多样的. 下面给出一个把矩阵转换成pyth ...

  2. 画pcb时丝印不能再焊盘上

    上图中U3就在焊盘上,这样印出来U3显示不全

  3. C++——多态性实现机制

    C++的多态性实现机制剖析 1. 多态性和虚函数 #include <iostream.h> class animal { public: void sleep() { cout<& ...

  4. decode与case when

    语法 decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) select * from reglike; ,),'aaa','yes','no') decode from ...

  5. OCulus Rift 游戏开发六原则

    本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/details/46685477 作者:car ...

  6. 删除GitHub上项目中的某个文件

    原文地址 https://www.jianshu.com/p/242412b43ca5 1.首先在本地中更新有该项目的最新包 即确保本地项目和git上的项目内容保持同步(git pull拉取项目代码) ...

  7. Vue源码--解读vue响应式原理

    原文链接:https://geniuspeng.github.io/2018/01/05/vue-reactivity/ Vue的官方说明里有深入响应式原理这一节.在此官方也提到过: 当你把一个普通的 ...

  8. ebook https://salttiger.com/category/notification/

    https://salttiger.com/category/notification/ 因为个人精力有限,持续搜集.整理.分享电子书已经占用我大部分业余时间,今后不再给评论区留言的朋友们找书,还希望 ...

  9. [SCSS] Use Standard Built-in SCSS Functions for Common Operations

    We can use javascript for color and opacity variations, math, list and map logic or to see if someth ...

  10. mysql中的触发器和事务的操作

    触发器 语法 创建触发器: CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigge ...