最近需要閱讀postgresql的**,但是只閱讀不能除錯,於是研究了怎樣編譯postgresql的**,寫在這裡記錄一下:
1.編譯環境
作業系統:windows7
開發工具:microsoft visual studio 9.0(即vs2008)
原始碼版本:postgresql-9.3.1經試驗,後續版本用此方法也可以編譯通過
2.工具準備
postgresql
activetcl
:
bison
:flex
:perl
:libiconv
:libxml2
:libxslt
:python
: libiconv-1.9.1.bin.woe32.zip,libxml2-2.7.6.win32.zip, libxslt-1.1.26.win32.zip
kfw
,openssl,zlib在編譯的時候報錯於是注釋掉了,這裡不下應該也是可以的
將以上工具安裝到乙個特定的目錄裡,我的是裝在了c:/pgtools/下
3.修改配置檔案
到原始碼目錄src\tools\msvc下,拷貝乙份config_default.pl並命名為config.pl
修改config.pl檔案如下:
#configuration arguments for vcbuild.
usestrict;
usewarnings;
our$config = ;
1;
4.編譯生成
開啟cmd,cd到src\tools\msvc目錄,執行如下命令:
perl build.pl debug #
注意,一定要是debug
錯誤處理:
ü
如果發現perl命令不存在
請檢查perl的安裝是否正確,並確保perl的可執行檔案路徑在環境變數中
ü
報」unable to determine visual studio version: the nmake version couldnot be determined. at src/tools/msvc/mkvcbuild.pm line 51.」錯誤
需修改src\tools\msvc\vsobjectfactory.pm檔案
將determinevisualstudioversion函式中的
open(p, "nmake /? 2>&1 |"
)
改為
open(p, "nmake /p 2>&1 |")
ü
編譯的過程中報錯:
查詢錯誤,大致上應該與安裝的依賴軟體有關,找到相關的軟體,在config.pl注釋掉該軟體即可
ü
編譯成功的標準應該是在最後的輸出中有如下行:
buildsucceeded.
23 warning(s)
0 error(s) #
注意不能有錯誤喲,否則後面vs編譯的時候可能會有問題
經過上面的步驟已經可以在原始碼目錄下找到.sln的工程檔案,同時已經有編譯好的exe檔案在相關的目錄下
此時用vs2008開啟pgsql.sln,就可以在vs2008中閱讀原始碼了
5.去除工程中的語法相關檔案
但是此時如果更改原始碼或者重新編譯,會發現編譯失敗,如果在第四步時編譯沒有錯誤的話,此時的錯誤大部分是因為.l和.y檔案引起的。
在windows下編譯.l和.y檔案比較麻煩,使用下面的方法繞過去:ü
在原始檔中搜尋所有.l和.y的檔案 ü
在解決方案資源管理器中找到對應的檔案 ü
右鍵該檔案->屬性->常規->從生成中排除->是 ü
如果做過重新生成,此時可能已經沒有了.l對應的.c檔案,因為重新生成首先會刪掉這種.c檔案,解決的方法是從原始的原始碼壓縮包中解壓出對應的.c檔案
因為原始碼發布的時候已經編譯好了.l的.c檔案,此時直接拿來用就好了
但是如果以後想改語法的話,可能就需要修改.l和.y檔案,然後拿到linux上編譯好對應的c檔案,覆蓋回**目錄即可
到此,乙個可以編譯並除錯的postgresql原始碼就已經準備好了
通過原始碼編譯安裝PostgreSQL步驟及問題總結
root vm 199 wget root vm 199 tar zxvf postgresql 9.3.2.tar.gz 2.編譯安裝,安裝到 opt postgresql 9.3目錄。root vm 199 cd postgresql 9.3.2 root vm 199 configure pr...
Linux環境PostgreSQL原始碼編譯安裝
linux環境postgresql原始碼編譯安裝 linux版本 centos 6.4 postgresql版本 postgresql 9.3.4.tar.gz 資料存放目錄 home gp data 軟體安裝位置 usr local postgresql bin bash 建立使用者和組 grou...
手動編譯原始碼安裝mysql 原始碼編譯安裝mysql
1 安裝mysql需要的依賴包 yum y install ncurses devel libaio devel 2 安裝編譯mysql需要的軟體 mysql 有3個版本分支 5.0 5.1系列 5.4 5.7系列 6.0 7.1群集產品系列 最早的mysql 5.0 5.1產品 直接.config...