mingw/msys中编译boost
首先,当然是安装mingw了。安装非常方便,去网站上下载个mingw-get或者它的图形界面版,然后安装就可以了。不过,在安装过程中,很容易出现下载失败的情况,所以建议还是使用mingw-get这个命令行版本的比较好,失败了马上重新执行一边就可以了。
首先必须安装gcc和g++,使用mingw-get install gcc g++就可以了。这个命令怎么这么像debian的包管理器呢~
安装好之后,再去下载msys的安装包。有图形界面,安装起来比较方便的,在最后是否已经安装了mingw的选项中选择是,然后输入mingw安装的路径即可。这个路径,msys会在fstab中写入,运行时挂载到/mingw目录下。
打开msys之后,就可以开始编译boost了。首先,当然是先去下载源代码包了,下载了之后解压缩。试了好几次,不能直接执行boost源代码最外层的那个bootstrap.sh这个脚本来生成bjam文件。直接执行,会提示找不到sys/resources.h这几个头文件,如果指定了toolset为mingw之后,bjam是可以编译过的,但是再编译后面的boost其他模块,就会提示缺少mingw.jam这个文件。
所以,通过查看这几个脚本文件,可以去toolsbuildv2enginesrc目录下,执行build.sh mingw就可以编译出后面需要用到的bjam。稍微看下就可以知道,其实对于mingw,用的编译工具还是gcc,只不过是编译bjam的时候加载的源代码不同,不会出现sys/resouces.h不存在这样的错误。
编译完成后,把bin.ntx85目录中的bjam.exe拷贝到源代码目录的最外层,然后回到最外层执行:
bjam –prefix=/mingw –toolset=gcc variant=release link=static threading=multi runtime-link=static install
因为在windows中使用,为了方便分发,所有的库都采用静态连接的方式。将boost安装到/mingw目录中,也就是mingw安装的地方,这样后面要编译其他东西的时候就能够找到这里库了。刚开始会有提示,默认没有使用mpi,系统中找不到python,这两个目前不需要,暂时不管了。
mingw/msys中安装pkg-config
在编译vmime的时候,发现configure的时候老是提示gnutls库找不到,这个明明已经是安装了的。稍微看了下configure文件之后,发现是因为pkg-config没有安装。
按照mingw的faq的提示,去这里下载了glib和pkg-config的二进制包。解压缩glib的包,将里面的libglib.dll复制到/mingw/bin中,然后将pkg-config.exe也复制到/mingw/bin中。再次运行的时候又提示pkg-config.exe缺少intl.dll,仔细看了下载页面,这个dll是在gettext的二进制包里面的,下载之。释放里面的intl.dll到/mingw/bin之后,pgk-config就能够正常运行了,vmime也能够正常编译了。