说明
在windows经常使用c/c++写些代码,但是又讨厌微软那个又大又慢的visual studio,所以搞一个类UNIX的编译环境来用。目前流行的有两种方案:MinGW和Cygwin。
MinGW和Cygwin的区别
- MinGW:
修改编译器,让window下的编译器把诸如fork的调用翻译成等价的形式。经过编译器编译后,原linux下的代码可以在windows下运行。
- Cygwin:
这修改库,让window提供一个类似unix提供的库,他们对程序的接口如同UNIX一样。CygWin提供了一个UNIX环境,使用CygWin可以在Windows下调用unix-like的API(比如说fork,select,dup)。
-
选哪个?
mingw的安装包比cygwin体积小。
mingw是为了像在linux上写代码,并在windows上运行(不可以掉fork这种接口)。
mingw可以接近windows本地程序的性能。
mingw编译的程序运行不依赖第三方库,体积小。
mingw可以调用windows的接口!cygwin是为了在windows上写linux代码(可以调用fork, pull这类linux特有的接口)。
cygwin在windows上运行,性能不行。
cygwin编译的程序,要依赖一个dll(cygwin1.dll)。
cygwin有和linux完全一样的运行环境。
因为我就是要像linux一样写代码,并要高效的运行在windows上,所以我选择MINGW。
下载安装MinGW64
下载地址
https://nuwen.net/files/mingw/mingw-16.1.exe
双击后解压到一个目录,比如我解压到 E:\,解压后为E:\MinGW。
下载安装MSYS
下载地址
http://www.mingw.org/wiki/MSYS/
配置msys
下载后,装到E:\MinGW\下。
修改msys/etc/fstab文件,设置MinGW的目录
# /etc/fstab -- mount table configuration for MSYS.
# Please refer to /etc/fstab.sample for explanatory annotation.
# MSYS-Portable needs this "magic" comment:
# MSYSROOT=E:/MinGW/msys/1.0
# Win32_Path Mount_Point
#------------------------------------- -----------
E:/MinGW /mingw
测试
双击E:\MinGW\msys\1.0\msys.bat, 会弹出一个cmd窗口,这个窗口就是我要的linux编译环境了。测试下编译器的版本:
$ g++ -v
Using built-in specs.
COLLECT_GCC=E:\MinGW64\bin\g++.exe
COLLECT_LTO_WRAPPER=e:/mingw64/bin/../libexec/gcc/x86_64-w64-mingw32/8.2.0/lto-wrapper.exe
Target: x86_64-w64-mingw32
Configured with: ../src/configure --enable-languages=c,c++ --build=x86_64-w64-mingw32 --host=x86_64-
w64-mingw32 --target=x86_64-w64-mingw32 --disable-multilib --prefix=/c/temp/gcc/dest --with-sysroot=
/c/temp/gcc/dest --disable-libstdcxx-pch --disable-libstdcxx-verbose --disable-nls --disable-shared
--disable-win32-registry --with-tune=haswell --enable-threads=posix --enable-libgomp
Thread model: posix
gcc version 8.2.0 (GCC)
可以看到,编译器版本是比较新的了。
提示
我记得以前有一个什么mingw-get-installer的东西,好像是32位的,软件也比较旧,最好不要用哪个。