Windows 7下使用GNU工具编译C/C++程序的环境搭建
2017-05-01 00:58
886 查看
本文旨在介绍在Windows下搭建支持C/C++编码的开发环境。
1 概述
2 安装
确保系统上没有mingw 或 msys,否则,请卸载它们;
运行MSYS2 installer,或者使用 sourceforge上的 MSYS2
installer(根据自己系统选择对应的版本);
安装完成后,请务必不要按照官网给出的步骤,避免产生以下错误。
按照 C:\msys64\etc\pacman.conf 第45至47行的描述:
你必须先执行命令
接着,换掉 C:\msys64\etc\pacman.d\ 的 mirrorlist.mingw32,
mirrorlist.mingw64 和 mirrorlist.msys 里的默认源(这里,C:\msys64要对应于你安装的目录位置),改为以下源:
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 安装
如果你安装的是64位MINGW32/MINGW64msys2,那么执行下列命令:> 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)
相关文章推荐
- windows下使用gvim搭建简单的IDE编译环境(支持C/C++/Python等)
- 在Windows下使用CMake+MinGW搭建C/C++编译环境
- 转:windows下使用gvim搭建简单的IDE编译环境(支持C/C++/Python等)
- 基于windows平台,dev-c++编译工具,搭建ffmpeg 开发环境
- 在Windows下使用CMake+MinGW搭建C/C++编译环境
- windows环境中使用VC的nmake和makefile编译c++程序
- Windows环境下使用cmd面板手动编译c/c++程序
- 【转帖】windows下使用gvim搭建简单的IDE编译环境(支持C/C++/Python等)
- windows下使用gvim搭建简单的IDE编译环境(支持C/C++/Python等)
- windows下使用IntelliJ IDEA的erlang编译环境搭建(含rebar工具)
- Ubuntu(Linux)使用Eclipse搭建C/C++编译环境
- Ubuntu(Linux)使用Eclipse搭建C/C++编译环境
- 在Windows平台使用flex和tcc进行编译原理-词法分析的实验环境搭建
- Ubuntu使用eclipse搭建c/c++编译环境----CDT插件
- Ubuntu(Linux)使用Eclipse搭建C/C++编译环境
- [转]Ubuntu 12.04 使用Eclipse搭建C/C++编译环境
- 使用mingw在windows下搭建c/c++IDE环境
- Ubuntu(Linux)使用Eclipse搭建C/C++编译环境