Windows平台編譯 PostgreSQL

來源:互聯網
上載者:User

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 下原始碼的相同位置
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

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\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"

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:\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 <目標目錄>

8、至此編譯完成,但是有些 dll 檔案需要手工拷貝,根據檔案缺失錯誤提示從第二步的開發包目錄中尋找。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.