MinGW MinGW-w64 TDM-GCC等工具链之间的区别与联系

windows 下 MinGW,TDM-GCC 编译64位和32位应用 加上 -m32 参数,生成32位的应用。 阅读详情

不当之处,尽请指正。


相同点:

一、 他们都是用于编译生成Windows应用程序的工具链。

二、 他们都是基于gcc的。


不同之处(只说大的):

一、项目之间的关系

1. MinGW应该是最先诞生的。

2. MinGW-w64项目最初是做为MinGW的一个分支而诞生,但现在已经独立发展。详细信息参见:

http://sourceforge.net/apps/trac/mingw-w64/wiki/History

http://zh.wikipedia.org/wiki/MinGW


3. TDM-GCC及其他类似的编译器集成包

 TDM-GCC是非官方组织提供及维护的编译器集成包。换句话说,他不是由MinGW或MinGW-w64项目官方提供的编译器集成包。

但他基于MinGW及MinGW-w64。而且,他也有他的优点:

例如,TDM-GCC集成了:

最新的稳定版本的GCC工具集,

 一些实用的补丁,

MinGW及MinGW-w64中的运行时API。

详细信息,参考:http://tdm-gcc.tdragon.net/about


除了TDM-GCC之外,类似的非官方编译器集成包有

Boost Science Package 、TakeoffGW等(其中大多基于MingGW-w64项目)。

更多编译器集成包参见:http://zh.wikipedia.org/wiki/MinGW


二、功能差别

1.  MinGW

貌似只能编译生成win32程序。


2.  MinGW-w64

支持编译生成Win32与Win64的windows程序。


3. TDM-GCC及其他非官方的编译器集成包

看他们基于什么项目。多数估计能支持编译生成Win32与Win64的windows程序。


三、运行平台

1.  MinGW

只能运行在windows平台。


2.  MinGW-w64

在Win32、Win64、Linux 32、Linux 64等主流平台上都有版本可用。

详见:http://mingw-w64.sourceforge.net/download.php



3. TDM-GCC及其他非官方的编译器集成包

没细考证过。估计多半是运行在windows平台。



MinGW 和 MinGW-w64 的介绍与配置 本文将介绍MinGW和MinGW-w64工具链的区别,并提供安装与配置的详细步骤。 阅读详情

相关推荐

从零开始:如何在Windows环境下为Rust配置完美的GCC工具链

本文详细指导如何在Windows环境下为Rust配置GCC工具链,解决常见的`x86_64-w64-mingw32-gcc`链接错误问题。通过安装兼容的TDM-GCC工具链、配置环境变量及解决libgcc_eh缺失问题,帮助开发者快速搭建稳定的Rust开发环境,特别适合CLion和VSCode用户。

weixin_29014237的博客 966

gcc、MinGW、MinGW-w64、TDM-GCC 区别与联系

MinGW、MinGW-w64、TDM-GCC 区别与联系1、MinGW1.1 MinGW 的组成1.2 MinGW 特点2、MinGW-w642.1 MinGW-w64 特点2.2 MinGW-w64 安装3、TDM-GCC4、MinGW、MinGW-W64、TDM-GCC 共同点 1、MinGW MinGW (Minimalist GNU For Windows) 是一套 GNU 工具集合。开发 MinGW 是为了那些不喜欢工作在 Linux(FreeBSD) 操作系统而留在 Windows 的人提供一

抄而不思则废 1万+

Windows下三大GCC编译器横评:MinGW/TDM-GCC/MSYS2到底怎么选?

本文深度解析了Windows平台下三大主流GCC编译器工具链——MinGW、TDM-GCC和MSYS2的核心差异与适用场景。文章从生态定位、安装配置、版本维护、项目适配及性能兼容性等多个维度进行横评,旨在帮助开发者根据自身需求,在追求极简安装的TDM-GCC、提供完整类Unix环境的MSYS2以及高度灵活的MinGW-w64之间做出明智选择。

weixin_29022115的博客 477

MinGW MinGW-w64 TDM-GCC等工具链之间的区别与联系

不当之处,尽请指正。 相同点: 一、 他们都是用于编译生成Windows应用程序的工具链。 二、 他们都是基于gcc的。 不同之处(只说大的): 一、项目之间的关系 1. MinGW应该是最先诞生的。 2. MinGW-w64项目最初是做为MinGW的一个分支而诞生,但现在已经独立发展。详细信息参见: http://sourceforge.net/apps/trac

liuhhaiffeng的专栏 1310

告别MinGW:为什么我选择TDM-GCC作为Windows下的G++编译器

本文探讨了在Windows平台下选择G++编译器的重要性,详细比较了MinGW与TDM-GCC的优劣。作者分享了从MinGW转向TDM-GCC的经验,重点介绍了TDM-GCC在64位支持、标准库兼容性和现代C++标准支持方面的优势,并提供了完整的迁移指南和优化技巧,帮助开发者提升Windows下的C++开发效率。

weixin_29065791的博客 446

SCL3400-D01双轴高精度倾角计

简介 两轴高精度加速度计,提供两个模式。 ±30° with 10 Hz LPF ±90° with 40 Hz LPF Resolution up to 32768 LSB/g Ultra-low 0.0009°/√Hz noise density 这款传感器是替换之前村田的停产的模拟量系列的芯片,正在测试中,具体效果大伙可以评测。 一、引脚连接图 引脚图兼容SCL3300 二、SPI接口 1.SCL3300和SCL3400略有区别如下图 左边为SCL3...

专注惯导领域 3808

编译器(Compiler)及C/C++编译器安装(c+安装)

机器语言是二进制在计算机中的表达,通过高低电平(高电压叫高电平,低电压叫低电平)来表示1和0的二进制。1和0的二进制构成机器指令(instruction),也称为机器码或计算机指令,计算机按照二进制的机器码执行。一条机器指令(机器码)必须包括操作码和地址码(或操作数)两部分。操作码指出该指令完成操作的类型,比如:加、减、乘、除、传送等。地址码指出参与操作的数据和操作结果存放的位置。机器指令在CPU中会进一步翻译为具体的操作,以便计算机按具体的操作执行。

zmbaliqq的专栏 4650

医学影像弹性形变处理

这段代码的主要流程是:读取 DICOM 医学影像,尝试使用 MONAI 进行弹性形变(根据版本适配),如果失败则使用 OpenCV 实现,最后可视化并保存处理结果。这样可以在不同环境下灵活处理医学影像的弹性形变需求。后面会写一篇解释弹性变形方法的短文。

wh_xia_jun的专栏 780

MinGW-w64 和 TDM-GCC 有什么区别?

MinGW-w64 专注于现代 Windows 系统,支持 32 位(i686)和 64 位(x86_64)架构,并提供对 ARM 和 ARM64 的实验性支持。TDM-GCC 主要针对 32 位和 64 位 x86 架构,但更新频率较低,对新硬件的支持可能滞后。MinGW-w64 提供官方在线安装工具(MSYS2)或独立包,支持灵活的组件选择。TDM-GCC 提供一体化安装包,内置捆绑工具(如 NSIS),适合快速部署但定制性较差。MinGW-w64 由社区积极维护,更新频繁,紧跟 GCC 上游版本。

mypsshx027a的博客 407

unitree-G1外接 USB 麦克风完整配置指南

首先,将type-c麦克风插入G1机器人的USB口后,记录下USB麦克风的卡号(card)和设备号(device),通常显示为 card 1: Device [USB Audio Device]

m0_47999117的博客 600

ORB-SLAM3代码详解 - 第 18 篇 · Atlas 多地图系统、地图保存与全系统调优

会跑:理解三线程架构与数据流(01/08/10/13),能编译、配参、复现各数据集结果。会改:掌握相机模型抽象(05)、g2o 顶点与边(14)、预积分(15),能接入新传感器、新相机、新约束。会调:理解每个参数背后的物理含义与耦合(03/15/16/18),能针对自己的平台与场景做精度/实时/鲁棒的权衡。ORB-SLAM3 的价值不止于一个可用的 SLAM 系统,更在于它是一套工程化的几何状态估计模板:清晰的模块边界、可替换的相机/传感器抽象、紧耦合优化的标准范式。

PX4-SLAM-PNC 172

MinGW、MinGW-w64、TDM-GCC

以下内容来自知乎:   MinGW:        只有32位版-------------------------不推荐使用。 MinGW-w64:提供 32位和64位----------更新最快,基本上gcc更近后几周内就会跟进。。 TDM-GCC:   提供32位和64位---------更新速度也不怎么样,。       涉及64位时,TDM-GCC和MinGW-w64还有一个重要...

twd_1991的专栏 7251

RK3568下GPIO模拟串口

在嵌入式开发中,硬件 UART 资源可能被其他外设占用。此时,通过 GPIO 模拟 UART(软串口)成为一种灵活的解决方案。本文基于 RK3568 平台,结合 Linux 内核模块,实现高精度软串口通信,并深入分析关键技术细节。可以看到已经接收到数据了,可以自己创建自定义的设备文件到/dev下,也可以按照串口设备的标准创建一个设备,后面有时间我写一篇和标准串口设备结合的gpio模拟串口文章。RK3568 GPIO 模拟串口(软串口)实现详解。将编译好的驱动放到板子上运行。再写个Makefile。

文石_2009的博客 366

Windows系统下GCC配置, MinGW-W64 GCC安装与配置,Dev-C++、CodeBlocks

在Windows系统下,除微软的VS外,大多使用GCC作为编译,现在的GCC并不是只能在Linux系统上才能使用的编译器,早已移值到了Windows系统下了。 由于VS的庞大,很多人员只是学习一下C/C++语言,庞大的VS功能大多是用不到的,这时在Windows系统下GCC就是一个不错的选择。(需要学习Windows下应用程序开发的建议还是使用VS做为开发工具) 现在的GCC其实是一个套...

任逍遊 --- [专用空间] 3万+

【BIM入门实战】Revit创建地形的几种方法及优缺点

Revit在体量和场地选项卡的【地形表面】工具可以创建三维地形,有三种方法:放置点、指定点文件和导入实例文件、倾斜摄影点云技术和InfraWorks地形生成。 文章目录1. 放置点2. 指定点文件3. 导入实例文件4. 倾斜摄影点云技术5. InfraWorks地形生成 1. 放置点 放置点功能位于体量和场地选项卡下地形表面,点开找到放置点,并通过自定义设置点的高程值来创建地形的高程数据。 优点:通过用户自定义高程点来绘制模型,使地形更为精确。 缺点:只适用于面积小的项目,面积太大,人工效率低下。 .

智慧空间实验室 4762

海康威视 2024届 数字逻辑设计 实习笔试分析

记录一下 5月11日晚,做的海康威视的一场笔试。分享给需要的IC人。 岗位:数字逻辑设计工程师(浙江 杭州) 转载需要本人同意! 我的见解不一定都是准确的,欢迎评论区交流指正~~

记录所学,分享知识,结识挚友 1万+

matlab MinGW-w64 C/C++ Compiler 的配置(附百度云下载资源)

环境:win10 matlab r2019b 起因: 安装某matlab工具包时需要使用命令 mex -setup 弹出常见错误,即需要编译器 两种编译器的尝试 由于那道墙的存在,让试错成本变得如此巨大 首先,matlab推荐了两种编译器 1.minggw-w64(失败) 使用这个的注意一下版本号 MATLAB R2015b, R2016a, R2016b, R2017a: MinGW GCC 4...

朝回走起的小窝 1万+

深入浅出SCSI子系统(一)Linux 内核中的 SCSI 架构

scsi系统

sinat_37817094的博客 6489

POSIX、Cygwin、MSYS、MSYS2、MinGW、MinGW-w64的概念区别

文章目录2.4 数据库连接池2.4.1 什么是连接池2.4.2 为什么要使用数据库连接池1、传统方式操作数据库2、使用连接池操作数据库2.4.3 如何使用C3P0连接池1、导入开发包 2.4 数据库连接池 2.4.1 什么是连接池 在开发中,所谓的池就是一个容器,来存储程序的中的数据. 而数据库连接池就是用来存储数据库连接的池子, 在整个程序中共享连接, 减少连接开关的次数, 实现连接的复用...

LawssssCat的博客 2019

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

win10安装MinGW-W64的一点心得

MinGW: Minimalist GNU for Windows的缩写,是原生 Microsoft Windows 应用程序的极简开发环境。编译目标仅兼容 32 位应用程序,目前最新的官方二进制版本为 GCC 9.2.0。(OSDN) MinGW-W64: 衍生自 MinGW 的项目,编译目标兼容 32 位应用程序与64 位应用程序,目前最新的官方二进制版本为 GCC 8.1.0。(SourceForge) TDM-GCC: 衍生自 MinGW 和 MinGW-w64 的项目,分为 32 位与 64

weixin_44215642的博客 1万+

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

解决G++编译Python扩展报错:从MinGW到TDM-GCC的完整迁移指南

本文深入解析了在Windows系统下使用G++编译器编译Python C/C++扩展时,因MinGW与MSVC运行时库不兼容而导致的链接错误。通过对比MinGW、MinGW-w64和TDM-GCC,推荐并详细指导了迁移至兼容性更佳的TDM-GCC的完整流程,包括环境配置、编译命令及高级排错方法,助您一劳永逸地搭建健壮的Windows混合开发环境。

android的专栏 920

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

POSIX、Cygwin、MSYS、MSYS2、MinGW、MinGW-w64的区别

对于习惯了Linux上GCC编译器的朋友来说,总想在Windows上复制他们的经验,于是出现了各种方法将GCC编译器移植到Windows上的方法,那么哪种方法更好一些呢?这些方法之间又有什么联系呢? POSIX POSIX:可移植操作系统接口(Portable Operating System Interface of UNIX,缩写为 POSIX),POSIX 标准定义了操作系统应该为应用程序提供的接口标准,是 IEEE 为要在各种 UNIX 操作系统上运行的软件而定义的一系列 API 标准的总称,其

生命不息,奋斗不止! 1万+
上一篇: 经典数独游戏+数独求解器—纯C语言实现
下一篇: SIGSEGV异常时打印函数调用链
无忧老猪
博客等级 码龄18年 200粉丝 112原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值