Electronic Joint Business

Solution for E-Business

MinGW64

从MinGW交叉编译出MinGW64

MinGW一直没有推出64位的版本,因此在SF.NET上又有一个新的项目叫 MinGW64,虽然大家支持的都是 GCC,但是两个项目是有一些区别的,除了前面提及的32位版和64位版的问题外,主要是二者的运行时不尽相同,MinGW64 重写了自己的 MinGW 运行时,称为 MinGW-W64,和 MinGW 相比,其运行时支持的 Windows API 更多一些。

但是 MinGW64 上发布的二进制包中,缺少一些很有意思的语言工具,比如 ada。而编译ada要求GCC中一定要有 gnat(即 ada 编译器)存在,而目前只有 MinGW 才提供了 ADA 编译器,所以我们必须回到起点,从32位的 MinGW 逐步交叉编译 MinGW64。

这个过程会用到的工具有:MinGW 和 MSYS 的二进制包和以下源代码包,包括:binutils (2.22), GCC (4.7.0),MinGW-W64运行时(2.0.2), gmp (5.0.1), mpfr (3.1.0), MPC (0.9)。 要求 MinGW 中 GCC 工具的版本,最好要编译的源代码一直,避免出现低版本的 GNAT 无法识别高版本的 ADA 语法而报错。

一切就绪之后,可以开始解压源代码包,并将 gmp,mpfr 和 mpc 拷贝到 gcc-4.7.0 的目录中,并去掉名字中的版本号。 我们下来首先会构造出交叉编译的工具来。

创建32位交叉编译环境
1. 创建临时工作目录
我们的32位交叉编译环境将要被发布到 C:\\tools 目录下,打开DOS窗口,创建一个文件夹 tools。之后在 MSYS 安装目录下找到 etc 文件夹里的 fstab 文件,添加一行:

>>> 阅读全文

 

, , , ,

使用MinGW64编译GCC 4.6和4.7

gcc 4.6.0简介
GNU在3月25日正式放出了GCC 4.6.0的Tarball,不过在GNU的站点上也可以下载到GCC 4.7的Snapshot,你可以从GCC SnapShot站点, 下载到最新的版本。GCC 4.7的编译过程和GCC 4.6一致。

GCC 4.6支持以下这样一些新特性。除了支持一些新的鸡肋语言,比如Go,主要更新亮点有:

  • 大大改进了过程间分析和链接时优化。
  • 增加了128位浮点数支持,这个在科学计算领域应该很有用,X86和安腾系的芯片首先得益。
  • 一些详细的细节包括:

  • 增加更强力的编译优化选项-ofast,这个选项除了打开-O3的所有优化外,还开启了所有能开启的优化,以获得更好的性能,如-ffast-mast优化
  • 改进链接时优化(LTO): ◦全局可扩展优化器已经足够稳定。打开LTO后会默认开启此优化。该优化器可以自动分割成几个并行的编译过程,可以用选项-flto=n指定并行编译进程个数。
  • 增加-fstack-usage选项。编译器可以输出程序的栈使用信息
  • 你还可以参考GCC 4.6的release notes,该页面上有更详细的信息。

    准备工作
    为了开始编译GCC,你需要安装一份MinGW64的拷贝和MSYS。我们首先安装MinGW64,将其压缩包解开即可,在本文中MinGW64为C:\MinGW64。

    >>> 阅读全文

     

    , ,

    用MinGW64编译GTK-DOC

    Linux 下有太多重复的组织文档的方式(比如 man,doxygen),对大部分用户而言,GTK-DOC 基本就是鸡肋,我们可以把它给忽略。但是如果用 GIT 下载过 Gnome 一些源代码包,很大机会你会遇到需要运行 gnome-autogen.sh 这个命令(gnome-autogen.sh在 gnome-common 这个包中)来生成 configure 文件,这时候系统就会提示 Gnome-autogen.sh 依赖于 GTK-DOC。因此你不得不编译 GTK-DOC 来解决这个依赖性问题。

    GTK-DOC 的编译秉承了 Unix/Linux 的许多命令行工具的缺点– 繁琐、难用、而且基本就没啥用,只是为了折腾人。所以在这里详述 GTK-DOC 的编译过程,以解决这个让人厌恶的依赖问题。(这种依赖性在 Gnome 的包里比比皆是,比较神经质的设计)。

    首先 GTK-DOC 需要用到 XMLCATALOG 这个命令,xmlcatalog 存在于 libxml2 中,所以你首先需要编译 libxml2,详细过程你可以在用MinGW64编译Readline GetText等类库一文找到。

    GTK-DOC 还需要 JADE 等等依赖包,但由于我们基本不需要 GTK-DOC 的功能,这里只需要下载两个非要不可的 DTD 就可以了:就是 Docbook 4.3 DTDDocbook-XSL-DOC-1.171.1

    接下来需要把这两个包安装到 xml catalog 里,这也是个庞杂混乱的过程,为此我写了两段脚本,将其拷贝到相应的源代码目录中,在 MSYS 中运行这两段脚本就简单完成: 和 。

    >>> 阅读全文

     

    ,

    在 Eclipse 中集成 MinGW64 开发环境

    文章评价:

    本文主要讨论如何集成 Eclipse 和 MinGW64 来进行 C/C++ 应用程序的开发。由于不同版本 Eclipse CDT 的稳定性表现不一,因此需要你合理选择 Eclipse 的版本,现在已知 Helios (Eclipse 3.6) 的 CDT 在开发中会频繁崩溃,不建议使用。本文选择的是 Eclipse 4.3.1 来讲解,其他版本方法基本相同。

    GCC编译器
    首先要做的是下载一个合适的 MinGW64 编译器。要开发并运行 64 位的 Windows 应用,你可以选择 32 位的 GNU C/C++ 编译器并通过交叉编译来产生 64 位应用, 也可以选择纯 64 位的编译器。在 MinGW64 的官方站点上提供了许多不同的版本,你可以在 EJB.CC 下载到 GCC 4.6.1 for Windows ,或者在SourceForge.net上选择最新的版本。

    同时还需用到 MSYS(在 MinGW 的站点上提供),MSYS 提供一些常见的 Linux 命令工具用于 Windows GCC 的编程开发,目前只有 32 位版本,不过不会对代码生成有任何影响。

    接下里要做的就是为 Eclipse 安装最新的 CDT,目前 Galieo 只支持 CDT 6.0,Helios 则支持 CDT 7.0,而 Indigo 则支持 CDT 8.0,以此类推。如果你下载的 Eclipse 并未集成 CDT,你可以从 “Help” 菜单下选择 “install new software”,之后在 “avaiable software” 中的 “programming languages” 中选择各个 C++ 子项并安装。

    >>> 阅读全文

     

    , , , , ,

    用MinGW64编译及使用Spider Monkey引擎

    文章评价:

    SpiderMonkey 是用 C 语言编写的的 JavaScript 引擎,它支持 JS1.4 和 ECMAScript-262 规范, 可以分析、编译和执行脚本,并根据 JS 数据类型和对象的需要进行内存分配及释放操作。利用该引擎可以让你的应用程序具有解释 JavaScript 脚本的能力,目前已有许多项目都采用了 SpiderMonkey 引擎,比如 MongoDB, K-3D 等等。本文我们会简要介绍 SpiderMonkey 的编译方法,以及如何集成 SpiderMonkey 到您自己的项目中。

    编译 Spider Monkey
    Spider Moneky 依赖于 NSPR 软件包,NSPR 的全称是 Netscape Portable Runtime,它提供线程、线程池、垃圾收集、mutex 和 condition variable 等等诸多特性,并且独立于平台,是相当有用的一套 API。换句话说,NSPR 是屏蔽不同操作系统的差异性的一套API。

    关于 NSPR,另文介绍。

    在 Mozilla 站点上可以下载 NSPR 软件包,最新的版本是4.8.6,将它解压到 MSYS 的 $HOME 目录下。

    >>> 阅读全文

     

    , , , , ,

    用MinGW64编译Readline GetText等类库

    MinGW,即 Minimalist GNU For Windows。它是一些头文件和迁移库的集合,该集合允许人们在不使用其他第三方动态链接库的情况下采用 GCC(GNU Compiler C)产生 Windows32 程序。

    MSYS:Minimal GNU(POSIX)system on Windows,是一个小型的 GNU 环境,提供了类似 Bourne shell 环境下要编译程式的一些工具包括基本的 bash,make 等等,是为方便进行模拟 Linux 下配置编译环境而设计的。 二者配合可以很方便的将 Linux 下的许多优秀软件迁移到 Windows 上来。

    这里介绍一些常见的GNU库的编译方法,为了得到64位的二进制包,必须选用MinGW64,而不是常见的MinGW,所以需要添加–build=x86_64-w64-mingw32,您可以根据自己的实际环境进行修改。我是在YA-MinGW64中有维护一些二进制包,你可以从该站点上下载。

    安装 MinGW64
    MinGW64 不是 MinGW 的子项目,它是一个新的开源项目,我是 MinGW64 的开发者之一,这个项目的目的是把 MinGW 迁移到64位平台上来(MinGW官方不提供64位版本)。你可以到MinGW64站点 上下载 GCC 4.6.3 或者 GCC 4.7.0 的二进制发布,解压到 MinGW64 目录里即可。

    除了 MinGW64 外,我们还需要一个类似 Bash 的开发环境,以方便运行 configure 命令,你可以下载 MinGW 的 MSYS(32位)的可执行安装文件,安装过程中会提示 MinGW的路径,这里只需要选择 MinGW64 的安装目录即可。安装好 MSYS 之后,打开安装目录下的 etc 子目录中的 fstab 文件,添加以下几行:

    >>> 阅读全文

     

    , , , , , , , , , ,