您的位置:首页 > 编程语言 > C语言/C++

Windows 7下使用GNU工具编译C/C++程序的环境搭建

2017-05-01 00:58 886 查看
本文旨在介绍在Windows下搭建支持C/C++编码的开发环境。

1 概述

MSYS2
是Windows下的类Unix命令行运行环境。它提供了
pacman
包管理器,用
pacman
可以方便你安装其它程序包或者工具。

MINGW32
MINGW64
包含GNU编译工具集合,可以用它编译C/C++, Fortran,和其它源代码。它们的区别之处就是,分别是32位和64位系统下的版本。它们编译的代码,即使没有
MINGW32
MINGW64
或者
MSYS2
提供的运行时库,也可以在Windows下运行。
GCC
既可以被
MSYS2
也可以被Window原生
CMD
命令调用。我乐意选择
MSYS2
,是因为它建立的环境,提供了包管理器,可以方便安装其它编码工具(例如,
autoconf
automake
)。 当然了,
MINGW32
MINGW64
也可以单独安装,即使没有
MSYS2
。但是,我还是强烈建议使用
MSYS2
安装。

2 安装
MSYS2

确保系统上没有mingw 或 msys,否则,请卸载它们;

运行MSYS2 installer,或者使用 sourceforge上的 MSYS2

installer(根据自己系统选择对应的版本);

安装完成后,请务必不要按照官网给出的步骤,避免产生以下错误。

错误:GPGME error: Invalid crypto engine
错误:GPGME error: Invalid crypto engine
错误:GPGME error: Invalid crypto engine
错误:「mingw32」数据库不正确 (数据库不正确或损毁 (PGP 签名))
错误:「mingw64」数据库不正确 (数据库不正确或损毁 (PGP 签名))
错误:「msys」数据库不正确 (数据库不正确或损毁 (PGP 签名))


按照 C:\msys64\etc\pacman.conf 第45至47行的描述:

# NOTE: You must run 'pacman-key --init' before first using pacman; the local
# keyring can then be populated with the keys of all official Arch Linux
# packagers with 'pacman-key --populate archlinux'.


你必须先执行命令

pacman-key --init


接着,换掉 C:\msys64\etc\pacman.d\ 的 mirrorlist.mingw32,

mirrorlist.mingw64 和 mirrorlist.msys 里的默认源(这里,C:\msys64要对应于你安装的目录位置),改为以下源:

## 32-bit Mingw-w64 repository mirrorlist
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/i686/ Server = https://mirrors.ustc.edu.cn/msys2/mingw/i686/ Server = https://mirrors.xjtu.edu.cn/msys2/mingw/i686/[/code] 
## 64-bit Mingw-w64 repository mirrorlist
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/x86_64/ Server = https://mirrors.ustc.edu.cn/msys2/mingw/x86_64/ Server = https://mirrors.xjtu.edu.cn/msys2/mingw/x86_64/[/code] 
## MSYS2 repository mirrorlist
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/msys/$arch Server = https://mirrors.ustc.edu.cn/msys2/REPOS/MSYS2/$arch Server = https://mirrors.xjtu.edu.cn/msys2/msys/$arch[/code] 
然后才能下命令来同步源,并更新

pacman -Syuu


接着,你就可以愉快地使用了。

pacman -S man gcc base-devel git mingw-w64-i686-toolchain tar perl make openssl


至于上面签名问题的原因,在archlinux网站上的一篇帖子中《pacman 出了一些问题,error如下》分析一下原因,但是我还没有考证。待考证后再补充。 帖子内容如下:

类似问题,我以前也是隔几天就可能遇上。尝试过换用不同的源发现也不能降低问题出现的几率,就怀疑和ISP的http劫持有关。
解决方法是 /var/lib/pacman/sync 下的所有文件,添加支持https的源,再执行 pacman -Syu ,进行arch官方文件更新时总算没再遇过这样的问题,可惜archlinuxcn的源不支持https。
官方镜像里支持https的源,可以在下面链接里找到: https://www.archlinux.org/mirrors/status/[/code] 

3 安装
MINGW32
/
MINGW64

如果你安装的是64位
msys2
,那么执行下列命令:

> pacman -S base-devel mingw-w64-x86_64-toolchain


如果你安装的是32位
msys2
,那么执行下列命令:

> pacman -S base-devel mingw-w64-i686-toolchain


验证
gcc


$ gcc --version
gcc.exe (Rev2, Built by MSYS2 project) 6.3.0
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


4 环境变量的设置

为了方便,一般我们会把
gcc
所在的路径加入系统的环境变量,这样就可以直接使用
gcc
命令而不用绝对路径。

右键计算机
->
属性
->
高级系统设置
->
环境变量
。然后,将
C:\msys64\mingw64\bin
添加到
path
变量中。

确定以后 就可以在任意目录下直接使用
gcc
命令了。可以在任意目录打开
cmd
窗口,输入
gcc
查看环境变量是否设置成功。如果仍然提示不是内部或外部命令,说明环境变量设置失败。

参考文章:

MinGW coding under Windows (C, C++, OpenMP, MPI)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  msys2 mingw win7 C++ C