需要的源代码包:1. postgresql-8.3.5;2. libpqxx 3.0
编译时,使用vc的命令行方式。对于vc9,请执行VC安装目录下的vcvarsall.bat,其他版本的vc可能会有所不同。
以下为编译步骤:
1) 解包。下面叙述中,PGSRC代表postgresql-8.3.5解压后的根目录,LIBPQXXSRC代表libpqxx3.0解压后的根目录。
2) 编译libpq。那是相当的简单!cd到PGSRC/src/interfaces/libpq ,执行命令 nmake /f win32.mak ALL RELEASE=1即可。其中,RELEASE=1可以省略,因为默认就是这个。但如果要编译DEBUG,则必须指定DEBUG=1,且二者不能同时指定。至于ALL,就不用多说了吧,看下win32.mak中的对应部分即可,类似的,还有CLEAN。
3) 编译libpqxx。相比较与libpq,简直有点BT,不过耐心看intall、readme等文件后,也就可以搞定了:
a. 将LIBPQXXSRC/win32下的vc-libpqxx.mak文件拷贝到LIBPQXXSRC下;
b. 将LIBPQXXSRC/win32下的common-sample文件改名为common,并将位于尾部的PGSRC变量修改为与实际位置对应的位置;
c. 将/config/sample-headers/compiler/SunStudio-8/pqxx下的config-internal-compiler.h、config-public-compiler.h两个文件拷贝到LIBPQXXSRC/include/pqxx目录中;
d. 将LIBPQXXSRC/config/sample-headers/libpq/8.3/pqxx下的config-internal-libpq.h文件拷贝到LIBPQXXSRC/include/pqxx目录中;
e. 修改LIBPQXXSRC/include/pqxx/config-internal-compiler.h文件为:
- #define HAVE_SYS_TYPES_H 1
- //#define HAVE_UNISTD_H 1
- /* #undef PQXX_HAVE_COUNT_IF */
- #define PQXX_HAVE_IMBUE 1
- #define PQXX_HAVE_LOCALE 1
- //#define PQXX_HAVE_SLEEP 1
- #define PQXX_HAVE_STRING_CLEAR 1
- //#define PQXX_HAVE_SYS_SELECT_H 1
- /* #undef PQXX_SELECT_ACCEPTS_NULL */
- #define PQXX_HAVE_QUIET_NAN 1
f. cd到
LIBPQXXSRC目录下执行 nmake /f vc-libpqxx.mak ALL 即可。其中的ALL可换作clean、dll、static再加debug、release组合等,具体查看 vc-libpqxx.mak 即可知晓。