1. 程式人生 > >MinGW MinGW-w64 TDM-GCC等工具鏈之間的區別與聯絡

MinGW MinGW-w64 TDM-GCC等工具鏈之間的區別與聯絡

不當之處,盡請指正。

先科普一下GNU相關:

大笑微笑

GNU計劃英語:GNU Project),又譯為革奴計劃,是一個自由軟體集體協作專案,1983年9月27日由理查德·斯托曼麻省理工學院公開發起。它的目標是建立一套完全自由作業系統,稱為GNU。理查德·斯托曼最早在net.unix-wizards新聞組上公佈該訊息,並附帶一份《GNU宣言》等解釋為何發起該計劃的文章,其中一個理由就是要“重現當年軟體界合作互助的團結精神”。

GNU是“GNU's Not Unix”的遞迴縮寫。為避免與單詞gnu(非洲牛羚,發音與“new”相同)混淆,斯托曼宣佈GNU發音應為“Guh-NOO”( 

·關於),與“canoe”發音相似。其中,Emacs就是由這個計劃孵化而出。

UNIX是一種廣泛使用的商業作業系統的名稱。由於GNU將要實現UNIX系統的介面標準,因此GNU計劃可以分別開發不同的作業系統。GNU計劃採用了部分當時已經可自由使用的軟體,例如TeX排版系統和X Window視窗系統等。不過GNU計劃也開發了大批其他的自由軟體,這些軟體也被移植到其他作業系統平臺上,例如Microsoft WindowsBSD家族、SolarisMac OS

為保證GNU軟體可以自由地“使用、複製、修改和釋出”,所有GNU軟體都包含一份在禁止其他人新增任何限制的情況下,授權所有權利給任何人的協議條款,

GNU通用公共許可證(GNU General Public License,GPL)。這個就是被稱為“公共版權”的概念。GNU也針對不同場合,提供GNU寬通用公共許可證GNU自由文件許可證這兩種協議條款。

微笑

GNU是一個自由作業系統,其內容軟體完全以GPL方式釋出。這個作業系統是GNU計劃的主要目標,名稱來自GNU's Not Unix!遞迴縮寫,因為GNU的設計類似Unix,但它不包含具著作權的Unix程式碼。GNU的創始人,理察·馬修·斯托曼,將GNU視為“達成社會目的技術方法”。

作為作業系統,GNU的發展仍未完成,其中最大的問題是具有完備功能的核心尚未被開發成功。GNU的核心,稱為

Hurd,是自由軟體基金會發展的重點,但是其發展尚未成熟。在實際使用上,多半使用Linux核心FreeBSD等替代方案,作為系統核心,其中主要的作業系統是Linux的發行版。Linux作業系統包涵了Linux核心與其他自由軟體專案中的GNU元件和軟體,可以被稱為GNU/Linux(見GNU/Linux命名爭議)。

微笑

自由軟體基金會英語:Free Software FoundationFSF)是一個致力於推廣自由軟體美國民間非營利性組織。它於1985年10月由理查德·斯托曼建立。其主要工作是執行GNU計劃,開發更多的自由軟體。

微笑

GNU編譯器套裝英語:GNU Compiler Collection,縮寫為GCC),一套程式語言編譯器,以GPLLGPL許可證所發行的自由軟體,也是GNU專案的關鍵部分,也是GNU工具鏈的主要組成部分之一。GCC(特別是其中的C語言編譯器)也常被認為是跨平臺編譯器的事實標準。1985年由理查德·馬修·斯托曼開始發展,現在由自由軟體基金會負責維護工作。

原名為GNU C語言編譯器GNU C Compiler),因為它原本只能處理C語言。GCC很快地擴充套件,變得可處理C++。之後也變得可處理FortranPascalObjective-CJavaAda,以及Go與其他語言。

許多作業系統,包括許多類Unix系統,如Linux及BSD家族都採用GCC作為標準編譯器。蘋果電腦Mac OS X作業系統也採用這個編譯器。

GCC原本用C開發,後來因為LLVMClang的崛起,它更快地將開發語言轉換為C++。許多C的愛好者在對C++一知半解的情況下主觀認定C++的效能一定會輸給C,但是Taylor給出了不同的意見,並表明C++不但效能不輸給C,而且能設計出更好,更容易維護的程式。

微笑

MinGWMinimalist GNU for Windows),又稱mingw32,是將GCC編譯器和GNU Binutils移植到Win32平臺下的產物,包括一系列標頭檔案(Win32API)、可執行檔案

另有可用於產生32位及64位Windows可執行檔案的MinGW-w64專案,是從原本MinGW產生的分支[1]。如今已經獨立發展

GCC支援的語言大多在MinGW也受支援,其中涵蓋CC++Objective-CFortranAda

對於C語言之外的語言,MinGW使用標準的GNU執行庫,如C++使用GNU libstdc++

但是MinGW使用Windows中的C執行庫。因此用MinGW開發的程式不需要額外的第三方DLL支援就可以直接在Windows下執行,而且也不一定必須遵從GPL許可證。這同時造成了MinGW開發的程式只能使用Win32API和跨平臺的第三方庫,而缺少POSIX支援[3],大多數GNU軟體無法在不修改原始碼的情況下用MinGW編譯。

MinGW-w64是2005年由OneVision Software根據而獨立開發,以解決當時的MinGW專案更新緩慢,缺少新的重要的API以及64位支援。2008年MinGW-w64專案開源,由Kai Tietz維護。

  • SourceForge.net的MingW64官網提供https://sourceforge.net/projects/mingw-w64/上的提供由MinGW-Builds等專案組製作的預編譯版。編譯器分64位版和32位版、分別包含sjlj、drawf、seh異常處理機制、分別支援POSIX執行緒模式或Win32執行緒模式。使用者可根據需要下載不同版本。例如,64位的seh、POSIX執行緒的最新穩定版本的gcc包的下載目錄為:Toolchains targetting Win64 --> Personal Builds --> mingw-builds-->4.9.2-->threads-posix-->seh

大笑微笑

相同點:

一、 他們都是用於編譯生成Windows應用程式的工具鏈。

二、 他們都是基於gcc的。

不同之處(只說大的):

一、專案之間的關係

1. MinGW應該是最先誕生的。

2. MinGW-w64專案最初是做為MinGW的一個分支而誕生,但現在已經獨立發展。詳細資訊參見:

3. TDM-GCC及其他類似的編譯器整合包

 TDM-GCC是非官方組織提供及維護的編譯器整合包。換句話說,他不是由MinGW或MinGW-w64專案官方提供的編譯器整合包。

但他基於MinGW及MinGW-w64。而且,他也有他的優點:

例如,TDM-GCC集成了:

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

 一些實用的補丁,

MinGW及MinGW-w64中的執行時API。

除了TDM-GCC之外,類似的非官方編譯器整合包有

Boost Science Package 、TakeoffGW等(其中大多基於MingGW-w64專案)。

二、功能差別

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等主流平臺上都有版本可用。

3. TDM-GCC及其他非官方的編譯器整合包

沒細考證過。估計多半是執行在windows平臺。

相關推薦

MinGW MinGW-w64 TDM-GCC工具之間區別聯絡

不當之處,盡請指正。 先科普一下GNU相關: GNU計劃(英語:GNU Project),又譯為革奴計劃,是一個自由軟體集體協作專案,1983年9月27日由理查德·斯托曼在麻省理工學院公開發起。它的目標是建立一套完全自由的作業系統,稱為GNU。理查德·斯托曼最早在

MinGW MinGW-w64 TDM-GCC工具之間區別聯絡

不當之處,盡請指正。 相同點: 一、 他們都是用於編譯生成Windows應用程式的工具鏈。 二、 他們都是基於gcc的。 不同之處(只說大的): 一、專案之間的關係 1. MinGW應該是最先誕生

CentOS 作業系統中製作arm-linux-gcc編譯工具

1. 編譯: 1.1  環境: 在臺式機上安裝了linux; 參考手冊中的方法建立編譯環境(以前用的是arm-linux-gcc3.4.1,現在是4.4.3) Step1:將光碟目錄linux\中的arm-linux-gcc-4.4.3.tgz 複製到某個目錄下如tmp\,

GCC編譯工具

當我們編寫程式的時候,會用到編譯器。那麼編譯器是什麼呢?我們使用的計算機只能夠識別0和1的機器語言,不能識別高階語言編寫的程式;而編譯器的作用即將高階語言編寫成機器能夠識別的機器語言。 GCC 即 GNU C Compiler 。也是一個交叉編譯器,即編譯和執行的平臺不一樣。

交叉編譯工具的配置測試

1、首先下載交叉編譯工具鏈arm-linux-gcc-4.4.3.tar   https://download.csdn.net/download/weixin_38638777/103096802、建立工作目錄mkdir /usr/local/arm3、解壓交叉編譯工具鏈t

QtCreator中構建、qmake、執行、清理區別聯絡

qmake:根據實際環境建立專案檔案.pro   並且執行qmake生成適當的Makefile,並且執行qmake[qmake xx.pro]生成除錯[build-ttt-4_8_6-Debug]或者釋出[build-ttt-4_8_6-Release]目錄,裡面含有qmake後

gcc g++區別聯絡

編譯階段是相同的,連結階段g++預設連結c++庫,gcc沒有。 所以一般情況下用gcc編譯c檔案,用g++編譯cpp檔案。 但是也可以用gcc編譯cpp檔案,但後面需要加一個選項-lstdc++,作用

PRC、RMI、SOAP、REST區別聯絡

不同系統之間,總是避免不了要互相通訊,通訊方式無外乎兩種:方法呼叫、請求和等待。前者是直接呼叫對方的API,而後者是通過http請求,告訴對方要執行的方法和引數,並返回結果。 通訊方式    --RPC         :它是一種規範,採用請求和響應的方式,優勢是語言無關性

【web前端自動化工作環境配置】6. 版本控制工具gitgithup的區別聯絡以及git的基本用法

  最近專案裡面在用Git提交程式碼,剛開始的時候對這個工具也不是很瞭解,業餘時間抽空就學習了一下。Git是一個原始碼管理工具,便於大家協同開發,在一個專案中,凡是由開發人員編寫的程式碼都是原始碼,都需要被管理起來,讓原始碼容易被追溯,主要記錄每次變更了什麼,誰主導了這次的變

oracle例項名,資料庫名,服務名概念區別聯絡

DB_NAME: 資料庫名,此引數在建立資料前決定,資料庫建立後修改時,必須建控制檔案 DB_DOMAIN: 資料庫域名,用於區別同名數據庫。資料庫名與域名一起構成了全域性資料庫名 INSTANCE_NAME: 資料庫例項名,可以與資料庫相同 SERVICE_NAMES:

MVC框架(二)----前端後端MVC、MVVM設計模式區別聯絡

        上篇文章中提到了前端的框架分類,其中前端JS框架中有些是MVC設計模式,但是java和dotNET平臺也有自己的MVC也有自己的設計模式,這兩類有什麼區別呢,好多猿們甚是不解,旁徵博引

GCC 64位程式的makefile條件編譯心得——32位版64位版、debug版release版(相容MinGWTDM-GCC

  為了適應現在越來越流行的64位系統,經常需要將程式碼分別編譯為32位版和64位版。其次,除了需要生成debug版用於開發測試外,還需要生成release版用於釋出。本文介紹瞭如何利用makefile條件編譯來生成這些版本,而且不僅相容Linux下的GCC,還支援MinGW、TDM-GCC等Windows

MinGW(TDM-GCC-64) 編譯 wxWidgets

為了開發64位程式,嘗試TDM-GCC-64編譯wxWidgets: mingw32-make -f makefile.gcc 結果編譯報錯。根據錯誤提示,修改了編譯配置檔案(config.gcc): # Standard flags for C++ CXXFLAGS ?= -std=gnu++11 重新

mini2440 編譯工具gcc)安裝

asset ide www 路徑 簡單 idt ont php .bashrc 編譯工具鏈(gcc)安裝 by HYH | 2018 年 1 月 1 日 上午 9:36 一 .說明 下載 下載十分簡單,在友善之臂的官網下直接下載即可。名字是arm-*-gcc*.ht

Ubuntu 編譯 ARM-Linux-Gcc 工具 -- 通過crosstool-NG制作工具

rac export 項目 isa 查看 col pat ftp 芯片 1.手動下載制作過程中所需要的包,節省時間 所用包如下(不同版本所有包版本有所不同) libtool-2.4.6 linux-3.2.87 gmp-6.1.2 mpfr-3.1.5 i

Ubuntu 編譯 ARM-Linux-Gcc 工具 -- 安裝crosstool-NG

oss con 配置 ons efi wget port inux tar 一、安裝crosstool-NG 1、建立arm-linux-tools目錄,並進入該目錄 $ mkdir arm-linux-tools $ cd arm-linux-tools

GCC 編譯命令GUN工具的使用

Binutils原始碼工具包中的常用命令: gcc g++ ld ldd  nm strings   readelf addr2line strip  objcopy as ar gdb   1、gcc/g++編譯器 示例: gcc -c test.c gcc -o test

深入理解計算機系統 Linux&GCC工具實驗 筆記

——————————————————————————————————————————這個沒什麼營養價值,只是草稿 1.Linux 發展:multics-unix(Brian Kernighan等人)-Berkeley UNIX(BSD)-Linux釋出Linux 2.

Linux下開發stm32(一) | 使用gcc-arm-none-eabi工具編譯

1.為什麼不是gcc 之前我們花了三篇文章介紹Linux下如何進行C語言程式設計: Linux C語言程式設計(上篇) | gcc的使用 Linux C語言程式設計(中篇) | make的使用 Linux C語言程式設計(下篇) | gdb的使用 這是為

Linux第三步交叉工具arm-linux-gcc的安裝

使用sudo apt-cache search arm-linux命令可以收索你想要安裝的軟體。 然後sudo apt-get install 軟體名稱。比如現在Ubuntu最新版本為4.8.0,根據搜尋的結果安裝,比如:sudo apt-get install arm-linux-gnueabihf。 一