相關(guān)說(shuō)明
MinGW32和MinGW-w64:
MinGW32先開(kāi)發(fā),只能編譯32位程序;
MinGW-w64從MinGW32發(fā)展而來(lái),支持編譯64和32位位程序,同時(shí)可以進(jìn)行交叉編譯。MinGW-w64類(lèi)型:
x86_64: 支持在x64和x86上運行
i686: 支持在x86上運行i386/i686/x86_64區別
- i386 適用于intel和AMD所有32位的cpu,以及采用X86架構的32的cpu。
X86_64 適用于intel和AMD采用X86架構的64位cpu,兼容32位。
I686 只是i386的一個(gè)子集,支持的cpu從Pentium 2 (686)開(kāi)始,之前的型號不支持。
關(guān)于mingw-w64-x86_64:
生成64位庫只要用默認的參數編譯即可,而生成32位庫則要用-m32參數編譯.對于mingw-w64-i686:
默認生成32位程序對于seh sjlj dwrf區別
SJLJ (setjmp/longjmp):
available for 32 bit and 64 bitDWARF (DW2, dwarf-2):
available for 32 bit onlySEH (zero overhead exception):
will be available for 64-bit GCC 4.8.
詳情見(jiàn)
http://qt-project.org/wiki/MinGW-64-bitMsys說(shuō)明
MSYS是“Minimal SYStem”的縮寫(xiě),是一個(gè)Bourne Shell命令行解釋器,也是MinGW的補充,用來(lái)在MS Windows上移植一些開(kāi)源的程序。Msys2說(shuō)明
MSYS2(Minimal SYStem 2)是一個(gè)MSYS的獨立改寫(xiě)版本,主要用于 shell 命令行開(kāi)發(fā)環(huán)境。同時(shí)它也是一個(gè)在Cygwin (POSIX 兼容性層) 和 MinGW-w64基礎上產(chǎn)生的,追求更好的互操作性的 Windows 軟件。
安裝Msys2
Msys2現在維護得更好,軟件更新更方便,推薦使用Msys2,同時(shí)這里將不再介紹msys的安裝過(guò)程。
下載Msys2
到Msys2官網(wǎng) 下載最新版Msys2。
可以下載exe安裝包,也可以下載壓縮包,解壓出來(lái)的文件夾為msys64(這里使用64位)。安裝軟件
Msys2使用pacman管理軟件。pacman的基本使用如下:
pacman -S <packge-name> # 安裝軟件pacman -U <gz-file> # 安裝本地包,其擴展名為 pkg.tar.gzpacman -Syu # 同步Msys2源,并更新 pacman -Sy # 僅同步源 pacman -Su # 更新系統pacman -Sy <packge-name> # 同步源后再安裝軟件pacman -R <packge-name> # 該命令將只刪除包,不包含該包的依賴(lài)。pacman -Rs <packge-name> # 在刪除包的同時(shí),也將刪除其依賴(lài)。pacman -Rd <packge-name> # 在刪除包時(shí)不檢查依賴(lài)。pacman -Ss <keywords> # 這將搜索含關(guān)鍵字的包。pacman -Qi <packge-name> # 查看有關(guān)包的信息。- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
安裝Msys2后,或解壓Msys2后,第一次運行下msys2_shell.cmd,提示第一次設置初始化完畢后,就可以運行Msys2.exe、mingw64.exe或mingw32.exe,主要區別:
# mingw32 優(yōu)先使用 msys64/mingw32 下的工具;# mingw64 優(yōu)先使用 msys64/mingw64 下的工具;# msys2 兩個(gè)都不使用,只用自身 msys 的工具;- 1
- 2
- 3
升級msys2
一般第一次打開(kāi)msys2用“pacman -Syu”全面升級,然后會(huì )提示關(guān)閉終端,再次打開(kāi)后再一次運行”pacman -Syu”。
若是不想升級可以直接用pacman安裝自需要的軟件,如vim,git,gcc(即MinGw)等。安裝Vim
使用命令:
pacman -S vim- 1
即可以安裝vim。安裝完后在Msys2的~/下touch一個(gè).vimrc,里面加入設置:
set bs=2- 1
不然vim在插入模式下的退格不能用。
- 注意事項1:
Msys2的配置文件(~/.gitconfig, ~/.ssh/, ~/.vimrc等都在home下,注意別隨便刪除 )。 - 注意事項2:
將Msys64/usr/bin加入windows環(huán)境變量中后,就可以在cmd中直接使用Msys2中安裝的vim,git等軟件(如以編寫(xiě)bat腳本,使用git管理軟件版本)
安裝MinGw-w64
可以通過(guò)pacman直接安裝MinGw-w64,也可以下裝安裝包自,自己放置,pacman一條命令的事,這里講下自己手動(dòng)安裝。
下載
使用mingw-w64-install.exe下載,圖像界面,簡(jiǎn)單方便。
也可以直接下載編譯好的版本,然后到下列路徑下載相應的版本:
i686 => Home / Toolchains targetting Win32 / Personal Builds / mingw-builds
x86_64 => Home / Toolchains targetting Win64 / Personal Builds / mingw-builds
(這里以下載的x86_64-5.3.0-release-posix-sjlj-rt_v4-rev0.7z為例)
安裝:
無(wú)論是exe安裝還是自己解壓縮,最好直接將到mingw64文件夾直接放在/Msys64/mingw64下,(原本就已經(jīng)建好mingw64,直接合并即可),因為Msys2可以自動(dòng)設置/Msys64/mingw32和/Msys64/mingw64的路徑,不需要自己再往/etc/profile添加路徑。此時(shí),打開(kāi)/Msys64/mingw64.exe后就可以使用gcc了。
不過(guò)windows的cmd還不能直接用,因為還沒(méi)添加windows環(huán)境變量。同時(shí)要注意,即使設置好mingw64的windows環(huán)境變量,Msys2也不會(huì )讀取。添加mingw64的windows環(huán)境變量:
添加 D:\msys64\mingw64\bin到PATH環(huán)境變量中,打開(kāi)cmd就可使用gcc了,如:
gcc -v //用此命令可以查看gcc版本。- 1
- 2
添加MingW64的32位環(huán)境變量:
添加X(jué):\Msys64\mingw64\x86_64-w64-mingw32\lib32到環(huán)境變量PATH中。編譯32位程序:
gcc -m32 main.c -o main # 生成32位的main程序windres --target=pe-i386 # 對于32位程序資源文件的編譯,需要添加pe-i386參數- 1
- 2
- 3
- 4
- 5
- 添加”make”:
將D:\Msys64\mingw64\bin\mingw32-make.exe復制一份,重命名為make.exe,這樣在windows下就可以使用make命令了。
編譯vs使用的lib庫
- 生成lib
// generate def file gendef xxx.dll // generate lib file dlltool -D xxx.dll -d xxx.def -l xxx.lib- 1
- 2
- 3
- 4
- MinGw未生成.dll動(dòng)態(tài)庫
// 在configure時(shí)使用下面的參數 ./configure --disable-static --enable-shared- 1
- 2
- 直接使用.dll.a
mingw編譯出來(lái)的靜態(tài)庫后綴名為.a,編譯出來(lái)的動(dòng)態(tài)庫的導入庫后綴名為.dll.a,而在windows下后綴名為.lib的庫可能是靜態(tài)庫也可能是動(dòng)態(tài)庫的導入庫。
mingw編譯出來(lái)的動(dòng)態(tài)庫的導入庫.dll.a可以直接在vc中直接使用,例如:
#pragma comment(lib, "xxx.dll.a")
