您的位置:首页 > 数据库

Windows 上 postgresql VC 工程的搭建

2011-10-17 23:28 375 查看
postgresql 是一款优秀的开源数据库。基于工作需要和个人兴趣,在空余时间稍稍学习下其代码。第一件事就是在 windows 下搭建其 VC 工程啦,这样就可以借助功能强大的 sourceinsight 和 VC 浏览和调试代码啦。

1. 安装辅助软件 perl。因为 postgresql 的源码包中并不自带 vc 工程,但提供生成工程的相关脚本,可借助 perl 生成。在网上找到 perl 下载安装(http://www.perl.org/get.html),安装好后可在命令行下输入命令: perl -version 看是否安装成功,我执行的结果如下(如果提示找不到命令,可能是环境变量没有设置,找到 perl 中的 bin 目录,将其路径加入到环境变量的
path 里面就可以了):



1. 从官网上下载需要的版本的源码(如 9.0.3):http://www.postgresql.org/ftp/source/

2. 解压代码压缩包到本地某目录,解压后目录结构如下图:



3. 修改配置文件,准备生成 VC 的工程文件。进入目录 \src\tools\msvc 下,找到 config_default.pl(稍早版本应该是 config.pl),打开该文件,其内容大致如下。由于我们只安装了 perl,而且这已经足够生成 VC 工程了,所以我就把其他的都注释掉了,如果实际需要其它项的话,可以安装相应软件,并且在下面的文件中将其注释去掉。

# 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=>undef, # --with-tls=<path>

perl=>'C:\tools\Perl',
# --with-perl,我只保留了这一个,因为我只需要这一个,呵呵

#python=>undef, # --with-python=<path>

#krb5=>undef, # --with-krb5=<path>

#openssl=>undef, # --with-ssl=<path>

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

#xml=>undef, # --with-libxml=<path>

#xslt=>undef, # --with-libxslt=<path>

#iconv=>undef, # (not in configure, path to iconv)

#zlib=>undef # --with-zlib=<path>

};

1;

以上各项的具体含义,一会儿给一个链接,有兴趣的朋友可以看看,写得比较详细,我就不赘述了。

4. 好了,让我们现在命令行里试一把。先切换到 \src\tools\msvc 目录,然后用 perl 处理 build.pl,如下图:



会提示Solution.pm 中的一个错误

5. 打开 Solution.pm,转到 69 行,看看到底是啥问题?69行开始的内容如下:

# Determine version of vcbuild command, to set proper verison of visual studio

open(P,"vcbuild /? |") || die "vcbuild command not found";

my $line = <P>;

close(P);

if ($line !~ /^Microsoft\s*\(R\) Visual C\+\+ [^-]+ - \D+(\d+)\.00\.\d+/)

{

die "Unable to determine vcbuild version from first line of output!";

}

if ($1 == 8) { $self->{vcver} = '8.00' }

elsif ($1 == 9) { $self->{vcver} = '9.00' }

else { die "Unsupported version of Visual Studio: $1" }

print "Detected Visual Studio version $self->{vcver}\n";

不难看出,这里是要确定 vc 编译器的版本,可是, vcbuild 命令系统不认识。。。在命令行里试了一把,果然不认识。这里有一个比较简单地解决办法,就是根据自己的编译器类型,我们直接把上面的编译器类型给指定了,呵呵,更好地办法大家可以上网搜罗下。也就是说,改成下面这样(我装的是 VS2010,这里没有给出对应的版本号,所以我就给 9.00 啦,也就是对应 VS2008,等生成好了,用 VS2010 打开升级下就可以了):

# Determine version of vcbuild command, to set proper verison of visual studio

#open(P,"vcbuild /? |") || die "vcbuild command not found";

#my $line = <P>;

#close(P);

#if ($line !~ /^Microsoft\s*\(R\) Visual C\+\+ [^-]+ - \D+(\d+)\.00\.\d+/)

#{

# die "Unable to determine vcbuild version from first line of output!";

#}

#if ($1 == 8) { $self->{vcver} = '8.00' }

#elsif ($1 == 9) { $self->{vcver} = '9.00' }

#else { die "Unsupported version of Visual Studio: $1" }

#print "Detected Visual Studio version $self->{vcver}\n";

$self->{vcver}='9.00‘; #注意这个后面有个分号哦,我刚刚就搞掉了,哇哈哈

6. 好了,在来生成一下:



hoho~~~开始干活啦~~~兴奋ing~~~~

最后一行可能会报一个 msbuild 命令不认识,先不管它。

7. 好了,咱们来看看都变出了些神马东西。切换到代码的最上层目录下,



哇,好多工程文件啊!看来咱们成功了,欢呼~~~

好了,找找,有个 .sln 的解决方案文件的,名字叫做 pgsql.sln,找到之后,猛击啊!

我装的是 VS2010,生成的是 VS2008 的工程,打开的时候会提示装换,果断转。如果您安装的是稍早的版本,在上面的 5 中,可以设置对应的版本号哦!

8. 装换中¥!%@!¥%¥#…………&*……

9. 转换成功!



编译一把试试,变那个黑黑的 postgres 工程就可以啦!编译成功啦,环境也就搭建好啦!

好了,工程搭建就说到这里了,使用的问题后面再说吧!写得不好的或者看不懂的地方,欢迎大家拍砖啊!希望对大家有所帮助。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐