让一个开发人员升级系统环境,是一件艰难的事,我见过还在坚持用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 即可。