mingw64環境搭建

轉自:http://www.cr173.com/soft/132367.htmlhtml

 

MinGW64位版,默認編譯出來是64位的,須要編譯32位請使用-m32 參數!mingw是一款gnu工具集合是Minimalist GNU on Windows的簡稱,一個可自由使用和自由發佈的Windows特定頭文件和使用GNU工具集導入庫的集合!容許你在GNU/Linux和Windows平臺生成本地的Windows程序而不須要第三方C運行時庫。MinGW 是一組包含文件和端口庫,其功能是容許控制檯模式的程序使用微軟的標準C運行時間庫(MSVCRT.DLL)linux

GCC命令行參數

複習一下GCC命令行參數,看看各個版本的區別——
32位版:加上 -m32 參數,生成32位的代碼。
64位版:加上 -m64 參數,生成64位的代碼。
debug版:加上 -g 參數,生成調試信息。
release版:加上 -static 參數,進行靜態連接,使程序再也不依賴動態庫。加上 -O3 參數,進行最快速度優化。加上-DNDEBUG參數,定義NDEBUG宏,屏蔽斷言。windows

當沒有-m32或-m64參數時,通常狀況下會生成跟操做系統位數一致的代碼,但某些編譯器存在例外,例如——
32位Linux下的GCC,默認是編譯爲32位代碼。
64位Linux下的GCC,默認是編譯爲64位代碼。
Window系統下的MinGW,老是編譯爲32位代碼。由於MinGW只支持32位代碼。
Window系統下的MinGW-w64(例如安裝了TDM-GCC,選擇MinGW-w64),默認是編譯爲64位代碼,包括在32位的Windows系統下。eclipse

MinGW分爲較早開發的MinGW32和以後爲編譯64位程序開發的MinGW-w64,MinGW32只能編譯32位的程序,而mingw64不只能編譯64位程序,也能編譯32位程序,還能進行交叉編譯,即在32位主機上編譯64位程序,在64位主機上編譯32位程序。socket

mingw64環境搭建

1.首先下載mingw64,函數

下載下來後直接雙擊安裝,我直接安裝在C盤,目錄以下:工具

2. 下載msys. http://www.mingw.org/wiki/MSYS/,我下載的是1.0.11版本的。直接點擊安裝,我安裝在C盤,安裝過程當中會有一些提示,yes就行,最後須要配置一個mingw的環境變量,我配置的是上圖中的地址C:/mingw-w64/x86_64-4.9.2-posix-seh-rt_v3-rev1/mingw64,(注意正反斜槓啊)可能他會提示錯誤,說找不到路徑之類的,不要管他,暴力一點,直接到C:\msys\1.0\etc目錄,複製fstab.sample爲fstab,而後編輯以下圖:post

接着編輯C:\msys\1.0\msys.bat文件,在開頭加上call "D:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64\vcvars64.bat"在這樣環境變量就配置好了。測試

3.下載x264 ffmpeg優化

下載完以後所有拷貝到C:\msys\1.0\home。

cd到x264目錄,在公司電腦上編譯,簡直是一路暢通,沒有任何錯誤。步驟以下:

1. ./configure --prefix=/mingw --enable-win32thread --host=x86_64-w64-mingw32 --enable-static --enable-shared 

make

make install,而後你去你會發現mingw64下面會有x264的.h 以及lib文件。

2.編譯ffmpeg

我用的命令以下

./configure --prefix=/mingw --enable-gpl --enable-nonfree --enable-postproc --enable-avfilter --enable-ffplay --enable-avresample --enable-w32threads --enable-runtime-cpudetect --enable-memalign-hack --enable-bzlib --enable-libx264 --enable-zlib --disable-debug --enable-shared --arch=x86_64 --host-os=win64 --extra-cflags=-I/mingw/include --extra-ldflags=-L/mingw/lib ,你們能夠根據本身的需求增減選項。configure以後確定會報一個警告,沒有pkg-config這個玩意,須要下載glib_2.18.4-1_win32.zip和pkg-config_0.23-3_win32.zip,下載完以後只要把pkg-config.exe這個東西拷貝到msys/1.0/bin目下,而後會少個dll,在把dll拷貝進去。在執行上面的命令以後,這個警告就不會出現了。

接着

make

make install,ok安裝完畢,你直接在msys裏面執行cd /mingw/bin,裏面你就能夠看到不少dll,和ffserver.exe之類的,若是你須要編譯出ffplay,那還要編譯一個SDL1.2版本的。到此爲止所有就搞定了,感受又很簡單,關鍵是msys的環境變量必定要配置好,不然出現各類蛋疼。

編譯新版本的ffmpeg的時候會出現某某dll庫找不到,缺什麼下載什麼,有64位版本就用64位版本,確保不出問題。這樣下來應該就能夠編譯經過了。

查看編譯後的版本是不是64位的,能夠用

PS:我記得之前編譯ffmpeg和x264的時候老是提示一些類型錯誤int8_t之類的,是由於inttype.h 還有stdint.h這兩個頭文件的問題,不過如今的版本編譯的時候不會再出現這種低級錯誤了,若是你編譯新版本的時候出現,或許是你環境沒有配置好,你能夠從mingw裏面拷貝這兩個文件,而後本身改,估計也夠嗆的。

 

安裝步驟

如下以mingw-w64-bin_x86_64-mingw_20110510_sezero.zip包的安裝爲例,mingw-w64-bin_x86_64-mingw_20110510_sezero.zip包的安裝方法相同。

1.解壓mingw-w64-bin_x86_64-mingw_20110510_sezero.zip文件到某個目錄d:\thsoft\mingw64

測試安裝是否成功

打開cmd,進入d:\thsoft\mingw64\bin目錄,輸入一下命令gcc -v

將顯示gcc的版本等信息,若是看到此信息,表示安裝成功。

更進一步

1.若在msys(MSYS安裝方法)中使用,繼續一下步驟
1)打開msys安裝目錄下的etc/fstab,若是沒有該文件,則複製fstab.sample文件,並重名爲fstab
2)修改fstab文件

c:/mingw        /mingw
修改成本身的mingw安裝目錄
D:/thsoft/mingw64        /mingw
3)測試是否安裝成功,
啓動msys終端,輸入gcc -v

2.若要在eclipse cdt(eclipse cdt安裝方法)中使用,執行以下操做
1)配置Path環境變量
個人電腦–右鍵–屬性–高級–環境變量–系統變量中的path–雙擊
在path的最前面添加:
D:\thsoft\mingw64\bin;
2)測試是否安裝成功
打開eclipse cdt,新建一個hellowold項目,編譯鏈接(eclipse cdt使用Mingw編譯項目,該文章是mingw32的使用方法,mingw64也一樣適用),看是否能編譯運行。

 

其餘說明

若是想再32位的環境下,使用mingw-w64-bin_i686-mingw_20110510_sezero.zip,編譯64位的程序,以上基本相同,但須要作一下修改:

4、–>1–>3)須要改成以下:

x86_64-w64-mingw32-g   -v

這個是交叉編譯的編譯工具的命名比較奇特的地方,多是若在相同的機器上安裝多個mingw64,gcc出現同名的狀況。

4、–>2–>2)須要改成以下:

個人電腦–右鍵–屬性–高級–環境變量–系統變量中的path–雙擊
在path的最前面添加:
D:\thsoft\mingw64\x86_64-w64-mingw32\bin

MinGW與CygWin/gcc的區別

MinGW相比CygWin/gcc來說,更加貼近win32。由於它幾乎支持全部的Win32API。它所鏈接的程序,不須要任何第三方庫便可運行。

CygWin/gcc,其實這是兩個東西。CygWin是一個讓Windows擁有Unix-like環境的軟件。而gcc就是安裝在CygWin上的編譯器。

CygWin/gcc與MinGW的最大區別在於:使用CygWin/gcc能夠在Windows下調用unix-like的API,(如fork,spawn,signals,select,sockets等)。也就是說Cygwin是運行在Windows下的,可是她使用的是Unix-like系統的函數和思想。因爲這個區別,致使的結果就是用CygWin/gcc編譯出來的程序能夠無縫的運行在*nix環境下。可是若是調用了unix特有的API函數,在windows環境下不能正常運行,若是想在windows下正常運行的,就必須依賴cygwin1.dll,速度上會有些影響。

而用MinGW編譯出來的程序,若是源代碼裏面調用了unix環境的API,則MinGW會把這些對UNIX的API調用翻譯成win32下等價的形式。同時這個程序是不能在windows下運行的。

說白了,若是你是想在windows環境下開發linux運行程序,那麼CygWin/gcc是你的不二之選。

而若是你想開發的是windows運行程序,而且追求速度,那麼兩者相比而言,MinGW是更好的選擇

相關文章
相關標籤/搜索