win10 源码编译安装postgresql数据库

让一个开发人员升级系统环境,是一件艰难的事,我见过还在坚持用vc6开发的老码农。。。然而,历史前进的步伐是不会停滞的,趁着这次系统崩溃,鼓足勇气把系统升级到win10, 一个个软件装上去,发现win10兼容性其实很好。

要在windows上编译postgresql(以下简称pg),少不了vs系列IDE,我这装了vs2008和vs2013两个版本,用的就是以前在win7用的安装包, 安装过程一切顺利,要注意的是vs2008安装时要选下x64组件,这年头64位已经是标配了,vs2013则不用选了,默认就有。装完第一件事必须装visual assist , 否则读写代码很费劲,百度下有很多安装方法,不再赘述,安装完毕测试个helloworld正常。

接下来开始pg源码编译安装,今天的pg在windows下编译运行已经非常容易了。首先下载源码包,当前最新版9.6.1(点击打开链接下载)。下载后解压,解压后进入 \postgresql-9.6rc1\src\tools\msvc 目录,这个中build.pl脚本能根据相关makefile文件生成pg的vs工程,生成vs工程编译过程如下:

1. 打开开始菜单中vs 2013( 以2013为例)中的 Visual Stdio Tools ,运行 ”VS2013 x64 本机工具命令提示“ ,如不编64位可选其它的。 

2. 在第1步打开的命令提示窗口中进入上面的msvc目录,如我的为 e:\postgresql-9.6rc1\src\tools\msvc , 则直接输入

cd /d e:\postgresql-9.6rc1\src\tools\msvc 即可进入msvc目录。 

3. 然后执行 perl build.pl 即可生成并编译好pg数据库,执行perl build.pl DEBUG 则生成可调试版本。

4. 编译后建议跑下回归测试, perl vcregress.pl check 即可,它会自己建库并跑一系列pg的覆盖脚本,如果有pg语法不会用也可去里面找例子,脚本文件在 postgresql-9.6rc1\src\test\regress\sql\目录中,回归测试结果如下,167个脚本全部通过。


5. 测试无问题开始安装,假如想装到 e:\pgdb目录,执行perl install.pl e:\pgdb 即可。注意,以上命令都是在第1步中打开的命令提示窗口中进行。

6.install完成之后进入install安装目录 cd /d e:\pgdb\bin, 执行如下命令建库initdb.exe -D ../data,启动数据库"pg_ctl" -D "../data" -l logfile start,登陆psql -d postgres 数据库,这些命令可以在任何一个cmd窗口中输入,强列建议最后一句psql -d postgres在另外的cmd窗口中运行,否则向上翻历史命令可能不好用。

cd /d e:\pgdb\bin

initdb.exe -D ../data

"pg_ctl" -D "../data" -l logfile start

psql -d postgres

至此pg数据库已经编译安装并运行起来了,可以正常使用,执行select version();查看下版本



可能出现的问题:

问题1:第3步执行时报  'perl' 不是内部或外部命令,也不是可运行的程序或批处理文件。 这是没装perl引起,下载安装一个即可,我这用的是5.20版本。(可绿色安装,下载解压设置bin目录环境变量即可。http://pan.baidu.com/s/1dF1IbfV 密码:m0zg


问题2:装上后再跑第3步执行 perl build.pl报如下错误: Unable to determine Visual Studio version: The nmake version could not be determined. at src/tools/msvc/Mkvcbuild.pm line 86.  这是perl脚本中不能正常识别vs版本造成,该问题历史悠久,不知道pg为什么不修复,要修正很简单,打开msvc目录中 VSObjectFactory.pm文件,把该文件最下面的 DetermineVisualStudioVersion 函数中  if ($output =~ /(\d+)\.(\d+)\.\d+(\.\d+)?$/m) 这行改成if ($output =~ /(\d+)\.(\d+)\.\d+(\.\d+).*$/m)  ,实际就是将 ? 改成.* 即可。


问题3:修复上面问题后再执行 perl build.pl 一般可正常编译,编译比linux慢,需要等一会,编译后执行第4步通常会有如下问题: “'diff' 不是内部或外部命令,也不是可运行的程序或批处理文件”,缺diff比较工具,安装一个diff工具即可,该文件可绿色安装,从这(http://pan.baidu.com/s/1o8cxpua 密码:8u94)下载后解压设个环境变量即可。


问题4:fatal error C1083: 无法打开源文件: “src/backend/parser/gram.c” No such file or directory (src/backend/parser/parser.c)   src\include\parser/gramparse.h(29): fatal error C1083: 无法打开包括文件 

之类的,这种情况很少出现,没有安装bison 和flex引起,安装上这两个工具即可,也可绿色安装,下载解压设置环境变量即可http://pan.baidu.com/s/1o8cxpua 密码:8u94,上面的diff工具也在其中。


至此win10安装全部完成,没有特别的win10不兼容造成的问题,如有在perl build.pl时出现“错误1error MSB6006: “link.exe”已退出,代码为 2 ”这个问题可能安装的杀毒软件的问题,把杀毒软件关掉再执行一次  perl build.pl 即可。





  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值