转自:http://www.cr173.com/soft/132367.html

MinGW64位版,默认编译出来是64位的,需要编译32位请使用-m32 参数!mingw是一款gnu工具集合是Minimalist GNU on Windows的简称,一个可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合!允许你在GNU/Linux和Windows平台生成本地的Windows程序而不需要第三方C运行时库。MinGW 是一组包含文件和端口库,其功能是允许控制台模式的程序使用微软的标准C运行时间库(MSVCRT.DLL)

GCC命令行参数

复习一下GCC命令行参数,看看各个版本的区别——
32位版:加上 -m32 参数,生成32位的代码。
64位版:加上 -m64 参数,生成64位的代码。
debug版:加上 -g 参数,生成调试信息。
release版:加上 -static 参数,进行静态链接,使程序不再依赖动态库。加上 -O3 参数,进行最快速度优化。加上-DNDEBUG参数,定义NDEBUG宏,屏蔽断言。

当没有-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系统下。

MinGW分为较早开发的MinGW32和之后为编译64位程序开发的MinGW-w64,MinGW32只能编译32位的程序,而mingw64不仅能编译64位程序,也能编译32位程序,还能进行交叉编译,即在32位主机上编译64位程序,在64位主机上编译32位程序。

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,然后编辑如下图:

接着编辑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位的程序,以上基本相同,但需要做一下修改:

四、–>1–>3)需要改为如下:

x86_64-w64-mingw32-g   -v

这个是交叉编译的编译工具的命名比较奇特的地方,可能是若在相同的机器上安装多个mingw64,gcc出现同名的情况。

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

mingw64环境搭建的更多相关文章

  1. Go版GTK:环境搭建(windows)

    Go版GTK:环境搭建(windows) https://blog.csdn.net/tennysonsky/article/details/79221507 所属专栏: Go语言开发实战     1 ...

  2. MSYS2开发环境搭建(无幻的博客,编译OpenSSL,可使用pacman升级)

    MSYS2开发环境搭建 软件安装 下载msys2-x86_64软件包,双击安装到某根目录下,比如D:\msys64. pacman是MSYS2自带的软件管理工具: 可通过修改msys64\etc\pa ...

  3. .NET Core系列 : 1、.NET Core 环境搭建和命令行CLI入门

    2016年6月27日.NET Core & ASP.NET Core 1.0在Redhat峰会上正式发布,社区里涌现了很多文章,我也计划写个系列文章,原因是.NET Core的入门门槛相当高, ...

  4. Azure Service Fabric 开发环境搭建

    微服务体系结构是一种将服务器应用程序构建为一组小型服务的方法,每个服务都按自己的进程运行,并通过 HTTP 和 WebSocket 等协议相互通信.每个微服务都在特定的界定上下文(每服务)中实现特定的 ...

  5. rnandroid环境搭建

    react-native 环境搭建具体步骤这个大家已经玩烂了,这个主要是记录下来自己做win7系统遇到的坑 1.com.android.ddmlib.installexception 遇到这个问题,在 ...

  6. python开发环境搭建

    虽然网上有很多python开发环境搭建的文章,不过重复造轮子还是要的,记录一下过程,方便自己以后配置,也方便正在学习中的同事配置他们的环境. 1.准备好安装包 1)上python官网下载python运 ...

  7. springMVC初探--环境搭建和第一个HelloWorld简单项目

    注:此篇为学习springMVC时,做的笔记整理. MVC框架要做哪些事情? a,将url映射到java类,或者java类的方法上 b,封装用户提交的数据 c,处理请求->调用相关的业务处理—& ...

  8. 【定有惊喜】android程序员如何做自己的API接口?php与android的良好交互(附环境搭建),让前端数据动起来~

    一.写在前面 web开发有前端和后端之分,其实android还是有前端和后端之分.android开发就相当于手机app的前端,一般都是php+android或者jsp+android开发.androi ...

  9. Nexus(一)环境搭建

    昨天,成功搭建了自己的 Maven 环境(详见:Maven(一)环境搭建),今天就来研究和探讨下 Nexus 的搭建! 使用背景: 安装环境:Windows 10 -64位 JDK版本:1.7 Mav ...

随机推荐

  1. Enterprise Library系列文章目录(转载)

    1. Microsoft Enterprise Library 5.0 系列(一) Caching Application Block (初级) 2. Microsoft Enterprise Lib ...

  2. IMAP(Internet Mail Access Protocol,Internet邮件访问协议)以前称作交互邮件访问协议(Interactive Mail Access Protocol)。

    IMAP(Internet Mail Access Protocol,Internet邮件访问协议)以前称作交互邮件访问协议(Interactive Mail Access Protocol).IMA ...

  3. odbc错误信息一览表

    ODBC 错误信息 根据 X/Open 和 SQL Access Group SQL CAE 规范 (1992) 所进行的定义,SQLERROR 返回 SQLSTATE 值.SQLSTATE 值是包含 ...

  4. editplus快捷键大全之editplus编辑快捷键

    前面我们说了editplus快捷键大全之editplus文件快捷键和editplus快捷键大全之editplus光标快捷键,这里我们讲一下editplus快捷键大全之editplus编辑快捷键 删除光 ...

  5. 解决ie文本框不能输入和获取焦点问题

    解决办法:    从正常的机器上拷贝c:\windows\system32\mshtmled.dll到本机的system32目录下即可.或者从安装盘中提取该文件.    加载mshtmled.dll: ...

  6. WPF 元素绑定

    1.什么是数据绑定数据绑定是一种关系,WPF程序从源对象中提取一些信息,并根据这些信息设置目标对象的属性,目标属性作为依赖项属性.源对象可以是任何内容,可以是另一个wpf内容,甚至是自行创建的纯数据对 ...

  7. twisted udp编程

    概述 Unlike TCP, UDP has no notion of connections. A UDP socket can receive datagrams from any server ...

  8. Java--读写文件综合

    package javatest; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream ...

  9. Python OpenSource Project

    http://www.oschina.net/project/lang/25/python

  10. iOS 网络请求中的challenge

    这里有一篇文章,请阅读,感谢作者!http://blog.csdn.net/kmyhy/article/details/7733619 当请求的网站有安全认证问题时,都需要通过 [[challenge ...