編譯mingw底層環境
Ⅰ 如何在Windows平台下使用GCC編譯器
MinGW是指只用自由軟體來生成純粹的Win32可執行文件的編譯環境,它是Minimalist GNU on Windows的略稱。
實際上 MinGW 並不是一個 單純的C/C++ 編譯器,而是一套 GNU 工具集合。除開 GCC 以外,MinGW 還包含有一些其他的 GNU 程序開發工具 (比如 gawk bison 等等)。
開發 MinGW 是為了那些不喜歡工作在 linux(FreeBSD) 操作系統而留在 Windows 的人提供一套符合 GNU 的 GNU 工作環境。
所以,使用 MinGW 我們就可以像在 Linux 下一樣使用 GNU 程序開發工具。
GCC 就是 MinGW 的核心所在,GCC 是一套支持眾多計算機程序語言的編譯系統,而且在語言標準的實現上是最接近於標準的。並且 GCC
幾乎可以移植到目前所有可用的計算機平台。(我的電腦上就還裝有 DevKitPro,裡麵包含 GCC 的 ARM(for GBA/DS/GP32)
和 MIPS(for PSP) 版本。)
GCC 本身不像 VC 那樣擁有IDE 界面(在 Windows 上也存在 Dev C++ 之類的支持 MinGW 編譯器的
IDE)。源代碼編輯你可以選用任何你喜歡的文本編輯器(據說微軟的開發人員包括 VC 的開發都不用 VC 所帶的 IDE 編輯器,而是選用 GNU
的 VIM 編輯器)。然後使用 make 等工具來進行軟體項目的編譯、鏈接、打包乃至發布。而像 cvs(svn)
源代碼版本控制工具可以讓世界上任何一個角落的人都可以參與到軟體項目中來。
2.下載MinGW
一種方法是到Sourceforge(http://sourceforge.net/project/showfiles.php?group_id=2435)下載一個MinGW-2.0.0-3.exe。
但是我配置的時候我電腦上安裝了codeblocks,已經自帶了MinGW。
3.環境變數的配置
在(系統屬性-->高級-->環境變數-->系統變數 中)(以下目錄都根據自己的電腦MinGW所在位置不同而改變)
a.在PATH的值中加入「C:\Program Files\MinGWStudio\MinGW\bin」。這是尋找gcc編譯器的路徑。如果PATH中還有其他內容,需要用英文狀態下分號進行分割
b.新建LIBRARY_PATH變數,在其值中加入「C:\Program Files\MinGWStudio\MinGW\lib」。這是標准庫存放的路徑。
c.新建C_INCLUDE_PATH變數,在其值中加入「C:\Program Files\MinGWStudio\MinGW\include」。這是Include查找頭文件的路徑。
4.驗證gcc是否正常運行
在cmd控制台窗口下面,輸入gcc -v。若已經成功安裝好,會顯示gcc的版本信息。
Ⅱ Windows搭建MSYS2和MINGW64環境
為了在windows下編譯GDAL和Cesium Terrain Builder等軟體,需要搭建MSYS2和MINGW64的編譯環境
Windows Server 2012 R2
MSYS2 64位
雙擊安裝MSYS2之後,由於MSYS2默認資源站點速度較慢,可以配置國內 清華大學開源鏡像站
安裝完成後,編輯 /etc/pacman.d/mirrorlist.mingw32 ,在文件開頭添加:
編輯 /etc/pacman.d/mirrorlist.mingw64 ,在文件開頭添加:
編輯 /etc/pacman.d/mirrorlist.msys ,在文件開頭添加:
然後執行 pacman -Sy 刷新軟體包數據即可。
配置國內鏡像站點後,在shell裡面執行 pacman -Syuu 更新全部依賴
MSYS2內置了pacman包管理工具,運行
pacman -S gcc make
即可安裝gcc,make等工具
msys2安裝完成後,開始菜單會有三個啟動方式:
三種啟動方式區別主要在於編譯環境軟體包的不同,如gcc,clang等版本不同。通用的工具如:grep,git,vim,emacs等等在三種方式內都是一樣的。
默認情況下, msys64/home 會作為系統默認home目錄,如果需要修改home目錄,可在環境變數-》用戶變數中建立 Home 變數,指向自定義位置,然後修改 msys64/etc/nsswitch.conf ,設置 db_home: /%Home%
Ⅲ minGW使用方法
基本用法在後面給你加上了
MinGW是指只用自由軟體來生成純粹的Win32可執行文件的編譯環境,它是Minimalist GNU on Windows的略稱。詳情請參考<http://www.mingw.org>。
這里的「純粹」是指「使用msvcrt.dll的應用程序」。無法使用MFC (Microsoft Foundation Classes)。
MinGW:一個可自由使用和自由發布的Windows特定頭文件和使用GNU工具集導入庫的集合,允許你生成本地的Windows程序而不需要第三方C運行時庫。
MinGW,即 Minimalist GNU For Windows。它是一些頭文件和埠庫的集合,該集合允許人們在沒有第三方動態鏈接庫的情況下使用 GCC(GNU Compiler C)產生 Windows32 程序。
在基本層,MinGW 是一組包含文件和埠庫,其功能是允許控制台模式的程序使用微軟的標准C運行時間庫(MSVCRT.DLL),該庫在所有的 NT OS 上有效,在所有的 Windows 95 發行版以上的 Windows OS 有效,使用基本運行時間,你可以使用 GCC 寫控制台模式的符合美國標准化組織(ANSI)程序,可以使用微軟提供的 C 運行時間擴展。該功能是 Windows32 API 不具備的。下一個組成部分是 w32api 包,它是一組可以使用 Windows32 API 的包含文件和埠庫。與基本運行時間相結合,就可以有充分的權利既使用 CRT(C Runtime)又使用 Windows32 API 功能。
MinGW 官方網站為 http://www.mingw.org
實際上 MinGW 並不是一個 C/C++ 編譯器,而是一套 GNU 工具集合。除開 GCC (GNU 編譯器集合) 以外,MinGW 還包含有一些其他的 GNU 程序開發工具 (比如 gawk bison 等等)。
開發 MinGW 是為了那些不喜歡工作在 Linux(FreeBSD) 操作系統而留在 Windows 的人提供一套符合 GNU 的 GNU 工作環境。
(此前的 cygwin 雖然也是 GNU 的 Windows 移植,但是 cygwin 是有版權的,而不是 GNU。)
所以,使用 MinGW 我們就可以像在 Linux 下一樣使用 GNU 程序開發工具。
GCC 就是 MinGW 的核心所在,GCC 是一套支持眾多計算機程序語言的編譯系統,而且在語言標準的實現上是最接近於標準的。並且 GCC 幾乎可以移植到目前所有可用的計算機平台。(我的電腦上就還裝有 DevKitPro,裡麵包含 GCC 的 ARM(for GBA/DS/GP32) 和 MIPS(for PSP) 版本。)
GCC 本身不像 VC 那樣擁有 IDE 界面(在 Windows 上也存在 Dev C++ 之類的支持 MinGW 編譯器的 IDE)。源代碼編輯你可以選用任何你喜歡的文本編輯器(據說微軟的開發人員包括 VC 的開發都不用 VC 所帶的 IDE 編輯器,而是選用 GNU 的 VIM 編輯器)。然後使用 make 等工具來進行軟體項目的編譯、鏈接、打包乃至發布。而像 cvs(svn) 源代碼版本控制工具可以讓世界上任何一個角落的人都可以參與到軟體項目中來。
關於 MFC,微軟基礎庫類,這個隨 VC++ 攜帶的一個源代碼公開的開發包,和其他 Windows 程序開發包是一樣的。如果有 VC++ 的授權,你完全可以使用 MFC 的源代碼,也就是你使用 GCC 來編譯 MFC 程序是完全可以的。
當然,GNU 下也很多 Windows 程序開發包,甚至有一些是支持跨平台使用的。不僅僅可以直接把源代碼編譯為 Windows 程序,也可以不經修改編譯為其他操作系統的圖形程序。
不過 GNU 下,最流行的圖形界面開發庫是 GTK+。GTK+ 也能很好的運行在 Windows 平台(比如 GIMP 和 Gaim)。
總體說來,使用 MinGW 就是 GNU。
基本用法:
在mingw環境中生成和使用dll都是十分方便的。
1.生成dll
gcc(g++) -shared -o test.dll test.c(test.cpp)
通過該命令生成test.dll,將導出test.c中非靜態的函數和相關的類。
(注by asper:該命令行在處理jni涉及的dll時無效)
我使用微軟C++編譯器,cl命令對帶有空格的路徑也是無效的,需要用""括住
2.連接dll到exe中
mingw使用dll的方式和靜態庫.a的方式是一樣的,連接的時候只需要加上-ltest即可,沒有lib前綴的要求。
3.編寫jni調用的dll
有辦法了! 是gcc少了行參數。 如下:
gcc -I%JAVA_HOME%\include -I%JAVA_HOME%\include\win32 -Wl,--add-stdcall-alias -shared -o call.dll call.c
參數:-Wl,--add-stdcall-alias 可以為函數加上標准調用前綴(stdcall @nn)。
這樣編譯出的dll就可以了。都知道win32中dll中的函數要求有標准調用前綴,在JNI中不方便手動處理這個,Sun又沒說清楚這事由編譯器辦。所以搞得我很郁悶。找了大半個月,終於在一個很古老的網頁上找到答案。
基本上和VC的界面差不多 學習C語言用的最多的還是VC++ 6.0
Ⅳ MinGW是什麼東西它和QT是什麼關系怎麼用MinGW
mingw是一個小型的linux編譯環境,它和qt沒有關系
;qt是一個跨平台的,偏向於界面開發的,c++基礎的
開發工具
;
mingw使用是bash
命令行模式。
Ⅳ mingw安裝完後該如何編譯C語言
應該是先安裝MSYS,再安裝
mingw , 在mingw文件夾裡面應該有個bin
文件夾 ,留意一下該文件夾裡面「應該」有gcc.exe的應用程序,假設該bin文件夾的全稱路徑是X:\..\mingw\bin,那麼將它添加將它添加到環境變數裡面。
上面是配置環境,下面是編譯運行一個C程序:
在比如新建"D:\main.c"文件,裡面寫main(){
printf("Hello!\n");
},保存;
然後打開cmd控制台,執行:gcc
D:\main.c
-o
D:\main.exe
這個時候D盤會生成名為main的應用程序,控制台繼續執行:D:\main.exe
就運行了,應該顯示出Hello!了