Welcome 微信登录

首页 / 数据库 / MySQL / Windows平台编译 PostgreSQL

1、源代码下载与准备
PG 词法和语法解析分别使用 flex 和 yacc脚本,也就是源代码里能看到的 .l 和 .y 文件,由他们生成 .c 和 .h文件。
更详细资料见:
http://flex.sourceforge.net/(很不幸,这个网站是无法直接访问的,自己想办法)
http://www.gnu.org/software/bison/
这两个工具在 Windows 下的环境一直没有彻底弄好,再加上考虑它们的版本,我都是在 Linux 下生成语法引擎,操作步骤见 (2)。

参考资料:《lex与yacc》机械工业出版社

(1) 下载打包好的包,这种方式的好处是不需用 flex和bison
下载地址:
国际社区 http://www.postgresql.org/ftp/source/
国内镜像 ftp://www.highgo.com.cn/pub/mirrors/pgsql/source/
进入第二步,不需要在 Linux 生成任何文件。

(2) clone社区 git 代码库,需要:git flex bison
关于git,它是一个强大到一套糊涂的代码管理工具,请自行了解使用方法,官方网站:
http://git-scm.com/(仍然很不幸,自己想办法)
Windows下可以安装 Cygwin,选装 git 和 openssh,在 Cygwin 环境下使用 git。
官方网站:http://www.cygwin.com

需要注意的是,编译开关要一致,以下 a-e 步骤需要在 Linux 下执行。
a). 克隆代码库
git clone http://git.postgresql.org/git/postgresql.git
b). 配置编译参数,可能需要安装一些开发包,根据错误提示安装即可
./configure --prefix=/usr/local/pg93b1
--enable-nls="zh_CN zh_TW"
--without-perl
--without-python
--without-tcl
--without-gssapi
--without-krb5
--without-pam
--without-ldap
--without-bonjour
--with-openssl
--with-libxml --with-libxslt
--enable-thread-safety
--with-zlib
--without-selinux
c). 编译内核
make
d). 编译外围模组
cd contrib & make
cd ..
e). 编译隔离测试脚本
cd src/test/isolation & make
f). 将如下文件拷贝至 Windows 下源代码的相同位置
srcackendootstrapootparse.c
srcackendootstrapootscanner.c
srcackendparsergram.c
srcackendparsergram.h
srcackendparserscan.c
srcackend eplication epl_gram.c
srcackend eplication epl_scanner.c
srcackendutilsmiscguc-file.c
srcinpsqlpsqlscan.c
contribcubecubeparse.c
contribcubecubescan.c
contribsegsegparse.c
contribsegsegscan.c
srcinterfacesecpgpreprocpgc.c
srcinterfacesecpgpreprocpreproc.c
srcinterfacesecpgpreprocpreproc.h
srcplplpgsqlsrcpl_gram.c
srcplplpgsqlsrcpl_gram.h
src estisolationspecparse.c
src estisolationspecscanner.c

2、Windows 开发包的下载与准备
Windows下编译 PostgreSQL 所需开发包列表见文档 16.1.1. Requirements

http://slproweb.com/products/Win32OpenSSL.html
下载 OpenSSL,这里很全。

ftp://ftp.zlatkovic.com/libxml/
这里也有 openssl,但版本较老。
从这里下载可以下载到 iconv、libxml2、libxslt、zlib,推荐使用

http://ftp.gnome.org/pub/GNOME/binaries/win32/dependencies/
这里下载 gettext

文档提及的 http://gnuwin32.sourceforge.net/ 上的包更新已经远远落后于 gnu,但仍然可用。

将下载的包解压到 c:pgbuild 目录

3、微软VC 下载,express版对我们来说足够,还是免费授权。
http://www.microsoft.com/visualstudio/eng/products/visual-studio-express-products
安装完毕后,建议打好所有补丁。

4、修改 src oolsmsvcconfig_default.pl,指向我们下载到的开发包
nls => "C:\pgbuild\gettext"
openssl => "C:\pgbuild\OpenSSL"
xml => "C:\pgbuild\libxml2"
xslt => "C:\pgbuild\libxslt"
iconv => "C:\pgbuild\iconv"
zlib => "C:\pgbuild\zlib"

6、下载 ActivePerl 并安装
http://www.activestate.com/activeperl

7、打开 程序菜单 ”Microsoft Visual Studio 2010“ -> ”Visual Studio Tools“ -> ”Visual Studio Command Prompt (2010)“
如果是其他版本,注意是 32位的那个,没有把握可以看它的属性,vcvarsall.bat 后边有参数 x86。
set path=%path%;C:pgbuildiconvin;
set path=%path%C:ActivePerl-5.12.xin;
set path=%path%C:pgbuildgettextin;
进入 PostgreSQL 源代码 src oolsmsvc 运行 build.bat
编译完毕后运行: install.bat <目标目录>

8、至此编译完成,但是有些 dll 文件需要手工拷贝,根据文件缺失错误提示从第二步的开发包目录中查找。清理Oracle安装目录里的一些日志信息Oracle查询密码加密串方法相关资讯      PostgreSQL 
  • Ubuntu 16.04 下安装 PostgreSQL   (08月14日)
  • PostgreSQL 发布全系安全更新  (02月12日)
  • 使用pg_basebackup搭建PostgreSQL  (12/30/2015 09:00:29)
  • Linux下RPM包方式安装PostgreSQL  (03月04日)
  • PostgreSQL9.5新特性之行级安全性  (01月19日)
  • 利用pgpool实现PostgreSQL的高可用  (12/30/2015 08:54:36)
本文评论 查看全部评论 (0)
表情: 姓名: 字数