/***我自己在2013年编译时的原始记录,没任何修改直接放上来***/

       最近因为需要研究Firebird2.5.2的中文(包括GB18030UTF8字符集)下的排序,而官方提供的是在vs2005下编译的二进制文件,其所匹配的icu3.0精简版的,所以根据需要应该使用icu的完整版来进行匹配。

       根据Morgan的指导和建议,使用vs2010进行编译,又因icu官方网站在icu5.0里更新了中文的排序,故使用svn下最新版本的是icu5.1.2进行编译。Firebird整个编译过程并不复杂,不过因为编译器版本和icu版本不同的原因,编译前或者编译过程中还是需要对个别文件进行少量的修改。

       1、安装vs2010,如果已经有编译环境可跳过。

       2、下载windows版本的sed流编译器并安装,下载地址为http://sourceforge.net/projects/gnuwin32/files/sed/,并添加sed安装的bin路径到系统环境PATH变量里,如下:

       image.png

       image.png

       3、安装TortoiseSVN或者其他SVN,如果仅仅使用官方发行的稳定版本可跳过。

       4、去官方网站下载Firebird源代码包Firebird-2.5.2.26540-0.tar.bz2(地址:http://www.firebirdsql.org/en/server-packages/),或者用SVN下更新(地址:svn://svn.code.sf.net/p/firebird/code/firebird/branches/B2_5_Release)。

       5、到官方网站下载icu原代码包icu4c-51_2-Win32-msvc10.zip(地址:http://site.icu-project.org/download/51#TOC-ICU4C-Download),或者用SVN下载更新(地址:http://source.icu-project.org/repos/icu/icu/tags/release-51-2)。

       6、编译前修改,打开FirebirdBuilds\Win32setenvvar.bat源代码并j进行修改,将“::set FB_PROCESSOR_ARCHITECTURE=AMD64”修改为“set FB_PROCESSOR_ARCHITECTURE=x86”。

       7、将FirebirdExtern\icu下的source目录删除或更名,然后将下载的icu源代码包中的source目录拷入icu目录后,修改icu\source\allinoneallinone.slnsllinone_10.sln

       8、进入dos命令后进入Builds\Win32目录,运行make_icu进行编译。

       9、在src\jrd目录下建立新目录unicode,将第8步生成的lib\unicode目录下的ustring.hutrans.huchar.hucnv.hucol.h拷贝到该目录下。(方便起见,也可直接将第8步的lib\unicode目录直接拷贝到src\jrd目录下)。同样的方法,在src\intl目录下建立新目录unicode,将第8步生成的lib\unicode目录下的ucnv.h拷贝到该目录下。然后在Extern\icu目录下建立Win32\Release目录后,将第8步生成的binlibinclude拷贝到该目录下。

       10、修改make_boot.bat,将其中的icuuc30icudt30icuin30修改成icuuc51icudt51icuin51,在dos下运行make_boot进行编译。

       11、修改make_all.bat,将其中的icuuc30icudt30icuin30修改成icuuc51icudt51icuin51后,在dos下运行make_all进行编译。

       12、最后最新版的基于icu5.1.2firebird嵌入式及CS版本二进制文件在Firebird根目录的OUTPUT_WIN32目录里面。搞定!