【引用请注明出处:http://www.jb51.cc/article/p-euufifjc-mv.html】
pg内核源码解析课上用的vs调试pg源码。VS用起来确实方便,但是配置调试环境着实有点麻烦。首先得装个windows系统,最好是xp,win7稍微麻烦点;最好使用vs05,08和10也可以,但是比05还麻烦;此外还得装个perl,最好再装上cygwin以及其他一大堆linux上原生的东西。然后才能生成vs的工程,生成工程保不准会遇上一些参数配置问题。关键是pg很多都是跑在linux上的啊,在windows上有些与系统调用有关的代码执行和linux上是不一样,比如创建进程。如果不关心这些系统调用的东西,得益于pg源码很好的平台兼容性,我们也是可以在windows上研究和修改pg源码的。可是如果我们修改了pg的源码,要验证在服务器上的效果,还得打个包传到服务器上,重新编译、运行。运行的时候还没法在线调试,只能打日志。
鉴于以上的问题,最终还是放弃了鸡肋一般的vs。可如果在linux上用gdb调试,也实在有点hold不住。于是就用eclipse吧。
参考:http://wiki.postgresql.org/wiki/Working_with_Eclipse[1]
我的系统环境:
centos6.4_x64
gcc.4.4.7
eclipse-c/c++ kepler
postgresql 9.4
下面是我的配置过程:
1. 安装必要的软件
# yum install git readline* zlib* bison flex java-1.7.0*上述这些软件在某些linux系统中可能已经安装了。
2. 下载pg源码
源码可以用git从pg的repository里下载:
[bhq@localhost ~]$ mkdir project [bhq@localhost ~]$ cd project [bhq@localhost ~]$ git clone git://git.postgresql.org/git/postgresql.git下载完成后,在project目录下会有一个postgresql目录,里面就是pg的源码。[1]中的pg版本比较老,下载后是postgres目录,并将其重命名为pgsql。
也可以直接下载:http://www.postgresql.org/ftp/source/之后解压到project目录下。
3. configure源码
在终端中:
[bhq@localhost ~]$ cd postgresql [bhq@localhost ~]$ ./configure --prefix=$HOME/project --enable-depend --enable-cassert --enable-debug其中的$HOME/project 是指刚才下载源码时创建的那个project目录。这个目录会被用来存放pg编译之后生成的文件和目录。没有报error就configure成功了。
4. 配置eclipse
从http://www.eclipse.org/downloads/下载Eclipse IDE for C/C++ Developers。
打开eclipse之后,在package explorer中importpostgresql工程。操作过程和[1]中Import一节一样。只是import完成之后,我的eclipse没有自动开始make。于是手动make:
在eclipse的package explorere视图中右击postgresql的工程-> make targets-> create 。填入install-> OK。然后在package explorere视图中右击postgresql工程-> make targets -> build,选择刚才新建的install,OK。最后在console中可以看到“postgresql installation complete”就表示make instal成功了。以后每次修改源码之后都要重新make。
5. initdb
[bhq@localhost ~] $ mkdir ~/pgdata [bhq@localhost ~] $ cd project [bhq@localhost ~] $ ./bin/initdb -D ~/pgdata-D后的目录用于存放pg的配置文件和数据库文件,这个目录的所有者必须是启动pg和eclipse的用户。(由于ntfs文件系统不支持用户权限,所以不要把这个目录放在ntfs的分区上,用win linux双系统的人可能会遇到这个问题)