利用postgresql(PG9.1.1)源码搭建win32调试环境

前端之家收集整理的这篇文章主要介绍了利用postgresql(PG9.1.1)源码搭建win32调试环境前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

把以前写的东西,在这里整理一下,顺便根据新代码做些调整。

PG源码

网站:www.Postgresql.org

文件夹:E:\PG\01-源码\postgresql-9.1.1.tar.bz2

解压到:E:\PG\Postgresql

解压后的文件夹:E:\PG\Postgresql\postgresql-9.1.1

vs2005

自备

添加C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727到环境变量PATH

set path=%path%;C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727

命令行中,不区分大小写,但仅限于会话级别有效。

开源工具

可以去下载,下载地址以后补充。

文件夹位置:E:\PG\pgdebug

工具:opensslPerlprogPython24Tcl

配置

文件位置:E:\PG\Postgresql\postgresql-9.1.1\src\tools\msvc\config_default.pl

使用UE打开

# Configuration arguments for vcbuild.

use strict;

use warnings;

our $config = {

asserts=>0,# --enable-cassert

# integer_datetimes=>1,# --enable-integer-datetimes - on is now default

# float4byval=>1,# --disable-float4-byval,on by default

# float8byval=>0,# --disable-float8-byval,off by default

# blocksize => 8,# --with-blocksize,8kB by default

# wal_blocksize => 8,# --with-wal-blocksize,8kB by default

# wal_segsize => 16,# --with-wal-segsize,16MB by default

ldap=>1,# --with-ldap

nls=>undef,# --enable-nls=<path>

tcl=>'E:\PG\pgdebug\tcl',# --with-tls=<path>

perl=>'E:\PG\pgdebug\perl',# --with-perl

python=>'E:\PG\pgdebug\Python24',# --with-python=<path>

krb5=>'E:\PG\pgdebug\prog\pgsql\depend\krb5',# --with-krb5=<path>

openssl=>'E:\PG\pgdebug\openssl',# --with-ssl=<path>

#uuid=>undef,# --with-ossp-uuid

xml=>'E:\PG\pgdebug\prog\pgsql\depend\libxml2',# --with-libxml=<path>

xslt=>'E:\PG\pgdebug\prog\pgsql\depend\libxslt',# --with-libxslt=<path>

iconv=>'E:\PG\pgdebug\prog\pgsql\depend\iconv',# (not in configure,path to iconv)

zlib=>'E:\PG\pgdebug\prog\pgsql\depend\zlib'# --with-zlib=<path>

};

1;

配置perl环境变量

set path=E:\PG\pgdebug\Perl\bin;%path%

生成

cd /d E:\PG\Postgresql\postgresql-9.1.1\src\tools\msvc

perl build.pl DEBUG

cd /d E:\PG\Postgresql\postgresql-9.1.1\

mkdirmain

perl install.pl E:\PG\Postgresql\postgresql-9.1.1\main

cd /d E:\PG\pgdebug\prog\pgsql\depend\krb5\bin

copy *.dll E:\PG\Postgresql\postgresql-9.1.1\main\bin\

cd /d E:\PG\Postgresql\postgresql-9.1.1\main\bin

initdb.exe --no-localepgdb

词法文件

修正9个词法文件,取消其属性中的执行指令和输出文件

src\backend\parser\scan.l

contrib\cube\cubescan.l

src\bin\psql\psqlscan.l

src\interfaces\ecpg\preproc\pgc.l

src\backend\bootstrap\bootscanner.l

src\backend\replication\repl_scanner.l

contrib\seg\segscan.l

src\backend\utils\misc\guc-file.l

src\test\isolation\specscanner.l

8个语法文件,做如上处理

src\backend\parser\gram.y
src\backend\bootstrap\bootparse.y
src\backend\replication\repl_gram.y
src\pl\plpgsql\src\gram.y
src\test\isolation\specparse.y
src\interfaces\ecpg\preproc\preproc.y
contrib\cube\cubeparse.y
contrib\seg\segparse.y

修正文件

修改下面文件中的代码,注释掉该行。

\src\backend\main\main.c

//check_root(progname);


修改文件属性

调试-->命令参数和工作目录

-D pgdb

E:\PG\Postgresql\postgresql-9.1.1\main\bin

链接-->常规-->输出文件

E:\PG\Postgresql\postgresql-9.1.1\main\bin\postgres.exe

调试

经过注释所有词法和语法文件,可随意重新生成exe文件

......

114>stem_ISO_8859_1_danish.c
114>api.c
114>dict_snowball.c
114>Generate DEF file
114>Not re-generating DICT_SNOWBALL.DEF,file already exists.
114>正在链接...
114> 正在创建库 Debug\dict_snowball\dict_snowball.lib 和对象 Debug\dict_snowball\dict_snowball.exp
114>正在嵌入清单...
114>生成日志保存在“file://e:\PG\Postgresql\postgresql-9.1.1\Debug\dict_snowball\BuildLog.htm”
114>dict_snowball - 0 个错误,0 个警告
========== 全部重新生成: 114 已成功,0 已失败,0 已跳过 ==========

出现调试后台,即完成目的。

原文链接:https://www.f2er.com/postgresql/196207.html

猜你在找的Postgre SQL相关文章