Firebird是比较著名的开放源代码关系型数据库管理系统,最近有个Visual Studio 2010项目要使用Firebird嵌入版,而官方提供的预编译二进制文件是用Visual Studio 2005编译的,为了配套只好自己编译。Firebird的编译过程并不复杂,但是由于官方提供Visual Studio工程文件只到2008,编译前还是要对少量文件作修改。

具体步骤如下:

1.去Firebird官方网站下载Firebird源代码包Firebird-2.5.2.26539-0.tar.bz2(或更新版本)并解压缩
(下载地址:http://www.firebirdsql.org/en/server-packages/)
2.下载一个Windows版的sed流编辑器并安装,修改系统PATH环境变量使sed.exe在系统的可执行文件搜索路径中
(下载地址:http://sourceforge.net/projects/gnuwin32/files/sed/)
3.将builds\win32下的msvc9目录更名(或复制一份再更名)为msvc10,转换msvc10下的Firebird2.sln和Firebird2Boot.sln为Visual Studio 2010格式
4.用记事本打开extern\icu\source\allinone\firebird2release.vsprops,删除一行:
IgnoreDefaultLibraryNames="msvcrt.lib"
然后将extern\icu\source\allinone\allinone_9.sln更名为allinone_10.sln,转换为Visual Studio 2010版的解决方案
5.默认情况下Firebird编译系统自动识别当前操作系统位数,并编译相同位数的Firebird,如果想在64位Windows下编译32位版的Firebird,可打开builds\win32\setenvvar.bat,修改
:: set FB_PROCESSOR_ARCHITECTURE=AMD64

set FB_PROCESSOR_ARCHITECTURE=x86
6.修改builds\win32\setenvvar.bat使其能识别Visual Studio 2010的命令行工具。方法类似Visual Studio 2005/2008,识别主要利用了VS100COMNTOOLS环境变量(见附件)。
7.打开src/jrd/gds.cpp,注释掉一个与新版Platform SDK不兼容的头文件包含:
// #include <shfolder.h>
8.打开src/jrd/mod_loader.cpp,查找文本"msvcr90.dll",在这一行下面插入两行:
#elif _MSC_VER == 1600
                    "msvcr100.dll",
9.在builds\win32目录下打开命令行窗口,依次执行以下三个批处理命令:
make_icu
make_boot
make_all
编译产生的文件在output_Win32目录下