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是更好的选择

相关文章
相关标签/搜索