利用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\

mkdir main

 

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

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-locale pgdb

 

 

词法文件

修正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 已跳过 ========== 

 

 

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



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值