Postgres2015全国用户大会将于11月20至21日在北京丽亭华苑酒店召开。
报名链接:http://postgres2015.eventdove.com/
|
嘉宾介绍:出身于机械工程系,计算机全靠自学和闭门造车,不擅长使用专业术语,更不擅长华丽的技术描述,纯野路子程序员。早期参与过pgAdminIII的开发,做出若干贡献,包括代码提交与中文翻译。对PostgreSQL部分代码有过认真的学习,有过多次改写经历。目前从事PostgreSQL的定制开发,包括:语法引擎、缓存管理、协处理器(GPU)利用、存储管理等等。 |
嘉宾佳作: Windows平台编译 PostgreSQL
-
源代码下载与准备
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 下源代码的相同位置
src\backend\bootstrap\bootparse.c
src\backend\bootstrap\bootscanner.c
src\backend\parser\gram.c
src\backend\parser\gram.h
src\backend\parser\scan.c
src\backend\replication\repl_gram.c
src\backend\replication\repl_scanner.c
src\backend\utils\misc\guc-file.c
src\bin\psql\psqlscan.c
contrib\cube\cubeparse.c
contrib\cube\cubescan.c
contrib\seg\segparse.c
contrib\seg\segscan.c
src\interfaces\ecpg\preproc\pgc.c
src\interfaces\ecpg\preproc\preproc.c
src\interfaces\ecpg\preproc\preproc.h
src\pl\plpgsql\src\pl_gram.c
src\pl\plpgsql\src\pl_gram.h
src\test\isolation\specparse.c
src\test\isolation\specscanner.c
-
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 目录
-
微软VC 下载,express版对我们来说足够,还是免费授权。
http://www.microsoft.com/visualstudio/eng/products/visual-studio-express-products
安装完毕后,建议打好所有补丁。
-
修改 src\tools\msvc\config_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"
-
下载 ActivePerl 并安装
http://www.activestate.com/activeperl
-
打开 程序菜单 ”Microsoft Visual Studio 2010“ -> ”Visual Studio Tools“ -> ”Visual Studio Command Prompt (2010)“
如果是其他版本,注意是 32位的那个,没有把握可以看它的属性,vcvarsall.bat 后边有参数 x86。
set path=%path%;C:\pgbuild\iconv\bin;
set path=%path%C:\ActivePerl-5.12.x\bin;
set path=%path%C:\pgbuild\gettext\bin;
进入 PostgreSQL 源代码 src\tools\msvc 运行 build.bat
编译完毕后运行: install.bat <目标目录>
-
至此编译完成,但是有些 dll 文件需要手工拷贝,根据文件缺失错误提示从第二步的开发包目录中查找。
http://huilong.sctcbmw.cn/dezhou/ https://luobei.tiancebbs.cn/ http://jinqiang.ahtcbmw.cn/scsn/ http://ouyu.hftcbmw.cn/bmqz/ http://huilong.sctcbmw.cn/dgdg/ http://wutai.cqtcxxw.cn/linfen/ https://fenlei.tiancebbs.cn/gskn/ http://ouyu.hftcbmw.cn/hnwc/ http://bjtcxxw.cn/glpx/ http://shengshun.njtcbmw.cn/heze/ https://daan.tiancebbs.cn/ http://fuyang.tjtcbmw.cn/gxqz/ http://cf.lstcxxw.cn/zaozhuang/ http://cf.lstcxxw.cn/jinhua/ http://fuyang.tjtcbmw.cn/hulunbeier/ http://huaguang.jxtcbmw.cn/ningxia/ http://js.sytcxxw.cn/shbendi/
http://huilong.sctcbmw.cn/twtd/ http://ouyu.hftcbmw.cn/tai-zhou/ http://bjtcxxw.cn/jzwx/ https://xinhuiqu.tiancebbs.cn/ http://xinguang.sctcbmw.cn/chengdu/ https://jixian.tiancebbs.cn/ http://ruanwen.xztcxxw.cn/chongqing/ http://yz.cqtcxxw.cn/fjxm/ https://heishan.tiancebbs.cn/ http://huaguang.jxtcbmw.cn/sbzl/ http://gx.lztcxxw.cn/xuancheng/ https://sanshuiqu.tiancebbs.cn/ https://taoshan.tiancebbs.cn/ http://taiying.njtcbmw.cn/zibo/ https://huangsongyu.tiancebbs.cn/ http://xinguang.sctcbmw.cn/shputuo/ http://huilong.sctcbmw.cn/dp/
https://lianping.tiancebbs.cn/ http://bjtcxxw.cn/zjf/ https://ccqchengxi.tiancebbs.cn/ https://xianan.tiancebbs.cn/ https://xingtai.tiancebbs.cn/ https://fenlei.tiancebbs.cn/ysjz/ https://sryushan.tiancebbs.cn/ http://js.sytcxxw.cn/linfen/ https://dafengjiedao.tiancebbs.cn/ https://jinzhou.tiancebbs.cn/ https://fenlei.tiancebbs.cn/lincang/ http://ly.shtcxxw.cn/langfang/ https://fenlei.tiancebbs.cn/hnyz/ http://xinguang.sctcbmw.cn/qinhuangdao/ https://cuiyuehu.tiancebbs.cn/ https://shanghainanzhan.tiancebbs.cn/ http://ouyu.hftcbmw.cn/weifang/
友情留言板留言大全:https://www.henkao.com/wangluo/465.html 伤感的爱情句子:https://www.henkao.com/qinggan/1648.html 如何评课:https://www.henkao.com/zhichang/204.html 吃什么能补气:https://www.henkao.com/yangsheng/983.html 婚庆致辞:https://www.henkao.com/fanwen/2387.html 属蛇人一辈子的克星:https://www.henkao.com/xingzuo/1029.html 狗狗名字:https://www.henkao.com/yuedu/1612.html 奶凶奶凶可爱网名:https://www.henkao.com/wangluo/1489.html 自我评价200字:https://www.henkao.com/zhichang/1810.html 对公司的意见和建议:https://www.henkao.com/zhichang/2670.html 团员心得:https://www.henkao.com/xuexi/1980.html 天蝎座和什么星座最配:https://www.henkao.com/xingzuo/58.html 上火的症状:https://www.henkao.com/yangsheng/90.html 国旗下讲话:https://www.henkao.com/xuexi/2667.html 父爱作文:https://www.henkao.com/xuexi/272.html 门市风水:https://www.henkao.com/fengshui/488.html 教师本人述职:https://www.henkao.com/zhichang/2418.html 八个字早安心语:https://www.henkao.com/qinggan/918.html 王者荣耀名字稀有漂亮符号:https://www.henkao.com/wangluo/1191.html 继续教育学习总结:https://www.henkao.com/xuexi/236.html 家长会班主任发言:https://www.henkao.com/zhichang/2401.html 从现在开始:https://www.henkao.com/xuexi/476.html 有趣的网名:https://www.henkao.com/wangluo/1549.html 网名女生简单气质:https://www.henkao.com/wangluo/861.html 乐观的作文:https://www.henkao.com/zuowen/2603.html 网名女生霸气冷酷好听:https://www.henkao.com/wangluo/1573.html 述职报告模板:https://www.henkao.com/zongjie/1877.html 梦见雪崩:https://www.henkao.com/yuedu/1058.html 六字网名:https://www.henkao.com/wangluo/1333.html 三月再见四月你好说说:https://www.henkao.com/qinggan/1647.html