ZY's WordPress ? MinGW的安装配置

来源:百度文库 编辑:神马文学网 时间:2024/04/26 11:18:01

MinGW的安装

我之前说过MinGW中的东西很杂,所以要根据实际需要从MinGW的SourceForge主页下载不同的软件包。下面是我选择的MinGW安装包和安装过程:

  1. 下载一个MinGW的网络安装程序,通常叫:MinGW-[ver].exe,其中ver是安装程序的版本号,这个文件很小。

  2. 运行下载到本地的MinGW网络安装程序,它会提示你是仅下载(Download only),还是下载后立即安装(Download and install)软件包。可以选择MinGW整体环境的版本是:当前的(Current),以前的(Previous),还是候选的(Candidate),这是对软件包版本的全局性设置。我一般都不关心这里选择的版本,因为有些软件包实在有点老了,新版本也早出来了,但很长时间把老的放在Current版本的MinGW环境下,比如:截止于2009-12,Current版的MinGW设置中,下载到的GCC仍然是GCC 3。

    然后在安装程序中选择需要的软件包。因为这里选择的软件名字和实际下载的文件名并不完全对应,所以我会将所有的软件包全部选择,然后以Download only的方式只执行下载操作,最后根据需要手工安装软件包。

  3. MinGW安装程序下载的软件包都是gzip压缩的tar包,并且这些软件只是MinGW的基本软件,还有些额外的软件包不能通过安装程序下载。tar包里面的目录结构都符合Unix/Linux的目录组织方式(FHS - Filesystem Hierarchy Standard),只要将它们都解压到同一个目录下,就算把MinGW的基本包安装完成了。通过安装程序能下载到的基本软件包有:

    • binutils-[ver]-mingw32-bin.tar.gz

      GNU binutils的Windows移植版,包含一系列编译、链接、转储等工具,如:ld、as、objdump、strip、windres、readelf等。

    • gcc-core-[ver].tar.gz

      GCC的Windows移植版的核心文件,包括GCC的C语言编译器和运行环境。Current版的MinGW安装程序中,GCC的版本很长时间都是GCC 3.4.5,可能这个版本最稳定吧,不过有时我需要使用GCC 4新增的特性和选项,所以必安装GCC 4。

    • gcc-[lang]-[ver].tar.gz

      GCC特定程序语言的编译器和运行环境,比如:C++的编译器为gcc-g++-[ver].tar.gz,FORTRAN 77的编译器为gcc-g77-[ver].tar.gz等。C++的RT库/标准库包含在gcc-g++-[ver].tar.gz中。

    • mingwrt-[ver]-mingw32-dev.tar.gz

      MinGW的基本开发库,包括C的RT库/标准库和一个简单的POSIX界面。

    • mingwrt-[ver]-mingw32-dll.tar.gz

      包含mingwm10.dll这个动态链接库,当使用GCC的-mthreads选项(和线程安全异常处理有关)编译时,生成的程序依赖mingwm10.dll。

    • w32api-[ver]-mingw32-dev.tar.gz

      Windows平台的开发库,主要是Windows API接口,也包含DDK的头文件(不知道有没有库)和OpenGL的接口。Winsock、DirectX、OLE DB等Windows下比较重要的库在MinGW提供的Windows API中都能找到。

    • make-[ver]-mingw32-bin.tar.gz

      GNU Make的Windows移植版,程序名为mingw32-make.exe。

  4. 下载、安装额外的MinGW软件包。我常安装的额外软件包有:

    • GCC 4

      因为在Linux下开发时,我用的是GCC 4版本的编译器,为了方便程序工程的移植,在Windows下我通常也安装GCC 4版本的编译器。这里是MinGW GCC 4.4.0 Full的下载地址,此包中包括GCC所有的特定语言编译器和运行环境,此包为采用LZMA压缩的tar包,可以用7-zip解压,解压后的所有文件大小在380M以上。

      GCC 4.4.0 C++的RT库/标准库使用GNU的libstdc++-6的Windows移植版,C++标准库头文件的位置为:

      /lib/gcc/mingw32/4.4.0/include/c++

      使用GCC 4.4.0默认选项编译C++代码,生成的程序会依赖libgcc_s_dw2-1.dll,参考GCC 4.4.0 Release Notes and Changelog→5. GENERAL NOTESDynamic linking with libgcc_s_dw2-1.dll,自译如下:

      当在多个模块间,比如:DLL之间或DLL与EXE之间,抛出异常时,如果采用动态链接编译方式,则必需链接到libgcc_s_dw2-1.dll。因此,这是所有除C程序外的程序默认链接方式。如果要禁止动态链接,可以使用-static-libgcc选项,如果要使用C程序的动态链接方式,可以使用-shared-libgcc选项。

      如果使用GCC 3.4.5 C++,它的标准库头文件位置为:

      /include/c++/3.4.5

      MinGW GCC 4.4.0 Full中还包括一个pthread的实现:pthread-2.8.0,头文件位置为:/mingw32/include,库为:/mingw32/lib/libpthread.a。如果觉得MinGW GCC 4.4.0 Full比较大,可以单独下载GCC 4.4.0的各特定语言编译器和运行环境,还有单独的pthread-2.8.0包下载地址。

    • TCL/TK

      有时需要用TCL/TK编写一些自动化脚本和管理小程序,可以使用MinGW提供的TCL/TK运行环境:tcltk-8.4.1-1。

      相比起ActiveTCL和Cygwin的TCL/TK实现,MinGW的TCL/TK运行环境很小巧,不过功能上一点都不差,在/lib/tk8.4/demos目录下还有TK脚本的示例,对学习TCL/TK很有帮助,运行其中的widget脚本,就可以浏览所有的TK脚本示例。

      可以使用Windows的assoc和ftype命令,将.tcl/.tk文件和TCL/TK的解释器程序关联,如下:

      查看源代码 打印帮助 1 # 将.tk文件关联到TK的解释器wish84.exe 2 assoc .tk=TKScript 3 ftype TKScript="C:\MinGW\bin\wish84.exe" %1 %* 4    5 # 将.tcl文件关联到TCL的解释器tclsh84.exe 6 assoc .tcl=TCLScript 7 ftype TCLScript="C:\MinGW\bin\tclsh84.exe" %1 %*

      注意:使用assoc和ftype来关联脚本文件和解释器程序,只对Windows的Explorer Shell和命令行解释器cmd起作用,对Cygwin或MSYS的Shell是不起作用的。Cygwin和MSYS的bash依靠exec族函数启动其它程序,所以可以在脚本文件的首行加入#!/path-to-interpreter指示来关联解释器程序。

    • GDB

      GDB可以和Eclipse-CDT集成开发环境很好的结合,而且虽然GDB是以Source-Level源码级调试著称的,但在Eclipse-CDT中很容易使用GDB的汇编指令级调试。MinGW中的GDB版本已更新到GDB 7(2009-10),这是GDB 7.0.1的下载地址。

使用MinGW之外的工具和库

有些工具在MinGW/MSYS和Cygwin中都有,比如:man、wget等。我倾向于安装Cygwin中提供的这些工具。

有些库在MinGW的安装包中也能找到,比如:pthread、libiconv、gettext、OpenSSL等,但我倾向于从:单独移植到Windows并维护的项目中下载这些库,因为它们更加地本地化,这些单独的项目也更加关注特定的库本身。除非这些库的Windows移植版和Linux下的原版,它们之间的使用方式相差太大,我才会用MinGW或Cygwin中提供的库。下面列举一些我常用的库:

  • pthread

    由sourceware.org维护的Windows移植版的pthread库,可以从这个FTP地址浏览并下载合适的pthread版本。

  • libiconv、gettext

    这两个库对于编和i18n相关的程序很有用,它们可以从SourceForge的gettext for Win32项目下载,不过好像很长时间没更新了:截止于2009-12,提供的还是2004-01发布的libiconv 1.9.1和gettext 0.13.1。

    不过好消息是:从libiconv 1.9和gettext 0.13开始,这两个库的GNU原版都支持Windows下的编译了。

  • OpenSSL

    现在,OpenSSL的官方原版是支持Windows下编译的,而且支持包括:VC、BC、Cygwin、MinGW等多种Windows编译环境,参考我的这篇文章:在MinGW环境编译生成OpenSSL 0.9.8k记录。另外还有VC编译的OpenSSL版本,怕自己编译麻烦的话,可以从这里下载。不过这里较新的OpenSSL版本都用VC2005或VC2008编译,运行时需要VC的运行环境,o(>_<)o。

此外还有Boost、wxWidgets、ACE等这些重量级的库,这些库每个的安装配置都有很多细节,需要单独来说。不过好处是:像这些比较成熟的库,通常是支持多种系统和编译环境的。