pg_repack window編譯安裝

一、編譯準備

1.1 pg_repack下載

pg_repack下載位置:https://pgxn.org/dist/pg_repack/1.4.6/

目前最新版本為4.6版本

1.2 postgres版本選擇

編譯時需要在編譯機器上安裝postgre,官網(wǎng)可以下載到的版本是9.6.21,經(jīng)測試9.6.21可以使用

二、編譯pg_repack

注:已經(jīng)做完以下所有配置和修改的代碼打包為pg_repack-1.4.6_modify.zip,使用vs2013打開解壓之后其中的msvc文件夾下的pg_repack.sln即可編譯。

2.1使用vs2013打開pg_repack

pg_repack-1.4.6.zip解壓得到pg_repack-1.4.6目錄,進入pg_repack-1.4.6\msvc可以看到2010的sln文件,經(jīng)測試vs2013版本也可以正常編譯,使用vs2013打開pg_repack.sln并升級,可以看到bin和lib兩個項目

2.2添加并選擇pg_repack 64位編譯配置

鼠標右鍵點擊解決方案pg_repack,選擇配置屬性->配置,可以看到bin和lib兩個項目都是32位平臺下的配置,如下圖所示:

image.png

我們需要x64位平臺配置,點擊右上角配置管理器,點擊如下圖紅框所標示的下拉按鈕位置,并選擇新建

image.png

新平臺選擇x64,并選擇從Win32復(fù)制,如下圖

image.png

新建完成之后返回到配置屬性->配置,選擇剛剛新建的x64平臺,選擇完成如下圖:

image.png

2.3禁用將警告視為錯誤

bin和lib兩個項目都要禁用將警告視為錯誤,以下以bin項目為例,lib項目同理。

bin項目禁用將警告視為錯誤:選中bin項目,點擊鼠標右鍵,選擇配置屬性->C/C++->常規(guī),將警告視為錯誤選擇否,如下圖:

image.png

lib項目進行同樣的操作。

2.4注冊PostgreSQL的目錄

bin和lib兩個項目都要注冊PostgreSQL的包含目錄和庫目錄,以下以bin項目為例,lib項目同理。

bin項目添加包含目錄:選中bin項目,點擊鼠標右鍵,選擇配置屬性->VC++目錄,選擇如下圖所示的下拉位置并點擊編輯

image.png

添加PostgreSQL的頭文件目錄(根據(jù)實際PostgreSQL安裝目錄決定):

C:\Program Files\PostgreSQL\9.6\include

C:\Program Files\PostgreSQL\9.6\include\internal

C:\Program Files\PostgreSQL\9.6\include\server

C:\Program Files\PostgreSQL\9.6\include\server\port\win32

C:\Program Files\PostgreSQL\9.6\include\server\port\win32_msvc

添加完成后如下圖所示:

image.png

bin項目添加庫目錄:選中bin項目,點擊鼠標右鍵,選擇配置屬性->VC++目錄,選擇庫目錄位置,如下圖,

image.png

添加PostgreSQL的庫文件目錄(根據(jù)實際PostgreSQL安裝目錄決定):

C:\Program Files\PostgreSQL\9.6\bin

C:\Program Files\PostgreSQL\9.6\lib

添加完成后如下圖所示:

image.png

lib項目同樣的操作,注冊PostgreSQL的包含目錄和庫目錄。

2.5刪除lib項目不存在的源文件

lib項目src路徑下有一個不存在的文件pgut-be.c,選中并delete即可。刪除之后如下圖

image.png

2.6 bin項目修改鏈接庫

選中bin項目,點擊鼠標右鍵,選擇配置屬性->鏈接器->輸入,選擇附加依賴項并展開選擇編輯

image.png

1、libintl-8.lib修改為libintl.lib

2、添加postgres.lib

修改完成之后如下圖所示

image.png

2.7打入版本號

bin和lib兩個項目在編譯時無法打入版本號,所以對源代碼repack.c和pg_repack.c文件進行了修改,修改之后如下

image.png

bin項目為例,點擊鼠標右鍵,選擇配置屬性->C/C++->命令行,在其它選項框中填入/D "WIN_BUILD",如下圖:

image.png

lib項目需要做同樣的配置

2.8編譯項目

分別選中bin和lib兩個項目(不分先后),鼠標右鍵選擇生成。

生成的文件在pg_repack-1.4.6\msvc\x64\Release相對路徑下,有pg_repack.dll和pg_repack.exe兩個文件

三、插件文件匯總

注:已經(jīng)做完編譯和修改的文件在壓縮包中可以看到

3.1 pg_repack二進制文件

上邊編譯好的pg_repack.dll和pg_repack.exe兩個文件

3.2 pg_repack擴展安裝輔助文件

在pg_repack-1.4.6\lib相對路徑下有pg_repack.sql.in和pg_repack.control.in兩個文件,分別拷貝為pg_repack.sql和pg_repack.control

打開pg_repack.sql文件,將REPACK_VERSION替換為版本號1.4.6

image.png

修改之后為

image.png

打開pg_repack.control文件

將REPACK_VERSION替換為版本號1.4.6;替換module_pathname的值為實際的插件安裝DLL文件的路徑(插件安裝在后續(xù)介紹)

image.png

修改之后

image.png

四、插件安裝

4.1放入插件相關(guān)文件

以下描述使用相對路徑,均為pStor中PostgreSQL的路徑

1、pg_repack--1.4.6.sql和pg_repack.control放入到PostgreSQL\share\extension\中

2、pg_repack.dll和pg_repack.exe放入到PostgreSQL\bin\中

注意pg_repack.control中module_pathname的值與pg_repack.dll路徑位置一致

4.2登錄到數(shù)據(jù)庫并添加插件

1、登錄到想要使用插件的數(shù)據(jù)庫(cmd中PostgreSQL\bin\路徑下運行,注:使用管理員用戶,否則權(quán)限不夠無法添加)

psql.exe -h hostname -p port -d database_name -U super_user

2、 安裝插件(在登錄之后的提示命令中執(zhí)行),

執(zhí)行命令:create extension pg_repack;

使用\dx列出插件看是否安裝成功

image.png

注:卸載插件命令(drop extension pg_repack;)

3、 檢查是否安裝成功(在cmd中PostgreSQL\bin\路徑下運行,應(yīng)該輸出pg_repack版本號)

pg_repack --version

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容