Windows 上 postgresql VC 工程的搭建
来源:互联网 发布:人力资源优化配置方案 编辑:程序博客网 时间:2024/05/18 09:55
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 工程就可以啦!编译成功啦,环境也就搭建好啦!
好了,工程搭建就说到这里了,使用的问题后面再说吧!写得不好的或者看不懂的地方,欢迎大家拍砖啊!希望对大家有所帮助。
- Windows 上 postgresql VC 工程的搭建
- DBoW2在windows上的vs工程搭建方法
- postgreSQL在Windows上的基本操作
- Windows上git的搭建
- 在Windows Server上安装Postgresql的注意事项
- postgresql在windows 2003上安装失败的解决办法
- 【GIS】——Windows上PostgreSQL的安装
- windows上搭建自己的搜索引擎nutch
- 搭建 Windows 上的 Android 开发环境
- windows上svn服务器的搭建
- git,github在windows上的搭建
- Windows上python开发环境的搭建
- Caffe在Windows上的搭建
- Robot Framework在windows上的搭建
- ice3.3.1在windows下的编译以及工程搭建
- 在windows 2000 professional 上安装postgresql
- 在Windows平台上绿色安装postgresQL
- 在Windows平台上绿色安装postgresQL
- Java反射机制
- 线程概念 读操作系统概念第六版
- OpenBSD忘记密码
- HDFS的架构要点
- 处理 HttpURLConnection的字符流中文乱码
- Windows 上 postgresql VC 工程的搭建
- 从搜索引擎优化(seo)到社交媒体优化(smo)
- Delphi 编写COM+组件的知识和样例
- 如何在用户空间使用container_of宏
- 投影时出现错误ERROR 999999: Error executing function.
- GB2312 字符集
- PHP
- 阿里巴巴面试总结
- android代码库之textview跑马灯效果