原 Windows 64位下 PostgreSQL的编译

首先本文是根据权宗亮先生Windows 平台编译PostgreSQL 进而完成的,特此说明。

      由于编译Windows下64位的PostgreSQL(下面简称PG),所需的依赖包,大部分无法直接使用,所以这里着重讲一下依赖包的编译过程(没有这些包也是可以完成编译的,但是这些辅助包能更好地将PG的)。

一、编译环境:

Windows 7 旗舰版 Service Pack 1,VS2008 Express版。

二、所需下载的依赖包:

  1、Perl:是一种脚本语言,在字符串匹配等方面有很突出的优点。             2、Openssl:SSL是Secure Socket Layer(安全套接层协议)的缩写,可以在Internet上提供秘密性传输。             3、Zlib:是一种事实上的业界标准,以至于在标准文档中,zlib和DEFLATE常常互换使用。数以千计的应用程序直接或间接依靠zlib压缩函式库。我所使用的是1.2.7,这里只有源码包,没有直接可用的,所以必须进行编译安装。安装过程如下:(1)打开VS 2008 x64命令提示 (2)进入zlib目录里边的masmx64目录下(C:\zlib-1.2.7\contrib\masmx64),运行bld_ml64.bat (3)进入zlib-1.2.7\contrib\vstudio\vc9\目录,用vs2008打开zlibvc.sln方案文件  (4)在工具栏中将“解决方案平台”改为“x64”,编译即可 (5)自己对生成好的文件进行拷贝,按照32位下的目录进行拷贝即可。             4、Libiconv:是一个基于GNU协议的开源库,主要是解决多语言编码处理转换等应用问题。这个依赖包需要和Gettext一起编译,编译过程如下: (1)打开VS 2008 x64命令提示 (2)进入到Libiconv目录下运行命令:

         nmake -f Makefile.msvc NO_NLS=1 DLL=1 MFLAGS=-MD

         nmake -f Makefile.msvc NO_NLS=1 DLL=1 MFLAGS=-MD install (3)编译Gettext,进入到Gettext目录下运行命令:         nmake -f Makefile.msvc DLL=1 MFLAGS=-MD         nmake -f Makefile.msvc DLL=1 MFLAGS=-MD install (4)

        nmake -f Makefile.msvc DLL=1 MFLAGS=-MD

   nmake -f Makefile.msvc DLL=1 MFLAGS=-MD install

  5、Libxml:编译过程:(1)打开VS 2008 x64命令提示 (2)运行命令:cscript configure.js compiler=msvc prefix=c:\opt include=c:\opt\include lib=c:\opt\lib debug=yes (lib和include要将之前编译的Zlib和Libiconv放入,或者双击configure.js,生成configure.msvc,然后将Zlib和Libiconv的lib和include目录写明)(3) 运行命令:nmake /f Makefile.msvc (4)安装nmake /f Makefile.msvc install

        6、Gettext,在如上的步骤中已经完成了编译,但是PG需要libintl.lib文件,暂时未能对Libintl编译成功,在此就未进行赘述。

三、编译PG:

        1、下载PG源码,我使用的是PG9.0.9。         2、进行配置,在/src/tools/msvc/configure_defaul.pl,将之前所编译好的依赖包目录写入文件。     3、由于Bison和Flex未能在Windows有效运行,在此需要在Linux生成.c文件后拷贝到windows下源码包内,需要拷贝的文件如下:

src\backend\bootstrap\bootparse.c  src\backend\bootstrap\bootscanner.c  src\backend\parser\gram.c  src\backend\parser\scan.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 

4、打开 VS2008 x64命令提示,进入到/src/tools/msvc/下,运行build.bat   5、成功运行后,运行install.bat  "C:\pg9.0.9"(指定目录)   6、至此PG在windows64位下安装完成。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏游戏杂谈

rtx登录内网系统

公司内部使用rtx进行沟通和交流,经常遇到订餐的问题,用php写了一个订餐系统,实现rtx上点击链接打开系统就自动登录了,无需再次输入用户名和密码。

2551
来自专栏linux运维学习

linux学习第四十二篇:限定某个目录禁止解析php, 限制user_agent,PHP相关配置

限定某个目录禁止解析php 虚拟主机配置文件添加的核心配置内容: <Directory /data/wwwroot/111.com/upload> ...

2319
来自专栏云计算教程系列

使用Capistrano,Nginx和Puma在Ubuntu 14.04上部署Rails应用程序

Rails是一个用Ruby编写的开源Web应用程序框架。Nginx是一种高性能HTTP服务器,反向代理和负载均衡器,以其并发性,稳定性,可伸缩性和低内存消耗而著...

1554
来自专栏java学习

MySQL安装图解

MySQL安装图解 一、MYSQL的安装 1、打开下载的mysql安装文件mysql-5.5.27-win32.zip,双击解压缩,运行“setup.exe”。...

4166
来自专栏wblearn

package.json文件快速入门详解

相信入门nodejs或者npm的同学会对package.json这个文件有疑惑,对这个文件的作用不是很清晰,但搭建自己的博客每每用到node,npm这个文件又必...

1241
来自专栏Python研发

LInux50个基本命令

cd:(切换) vim:(创建文件)   vi:编辑文件 bc:(计算器)quit:退出计算器 mkdir:(创建目录)   mkdir -p:递归建立目录 r...

1343
来自专栏农夫安全

sqlmap基础使用详解(以sqli_labs为例)

一、基于错误的GET型注入 如果确定该url下存在注入,直接把url扔到sqlmap 1 先探测当前数据库版本 语句: sqlmap -u http://192...

4368
来自专栏Pythonista

python文件操作

打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,日后通过此文件句柄对该文件操作。

1632
来自专栏pythonlove

FTP使用MariaDB完成虚拟用户认证

文件传输协议(英文:File Transfer Protocol,縮寫:FTP)是用於在網絡上進行文件傳輸的一套標準協議。它属于网络传输协议的应用层。FTP是一...

1064
来自专栏我是攻城师

关于Hbase多版本存储的一个注意点

44316

扫码关注云+社区