本人系统Ubuntu12.04
参考:
1.安装vimgdb http://blog.csdn.net/citongke1/article/details/8438904
2.http://wenku.baidu.com/link?url=kBUbeLW6wEVRrDgoWaxrEAqyaz3UjzI69shh-yZK6pE-ay9C_Uq-4R16xofs3no5opdTtUnOMxsY4v-UswKnN_sm3J8WkZK0MdWgWnOY32m
相关链接:http://easwy.com/blog/archives/advanced-vim-skills-vim-gdb-vimgdb/
[ 下载vim源代码 ]
首先我们需要下载vim的源码。到vim主页(最快直接ftp://ftp.vim.org/pub/vim/unix)下载当前最新的vim 7.2的源代码,假设我们把代码放到~/install/目录,文件名为vim-7.2.tar.bz2。
[ 下载vimgdb补丁 ]
接下来,我们需要下载vimgdb补丁,下载页面在:
http://sourceforge.net/project/showfiles.php?group_id=111038&package_id=120238
在这里,选择vim 7.2的补丁,把它保存到~/下载/vimgdb72-1.12.tar.gz。
[ 打补丁 ]
运行下面的命令,解压源码文件,并打上补丁:
cd ~/install/ tar xjf vim-7.2.tar.bz2 tar xzf vimgdb72-1.14.tar.gz patch -d vim72 --backup -p0 < vimgdb/vim72.diff
[ 定制vim的功能 ]
缺省的vim配置已经适合大多数人,但有些时候你可能需要一些额外的功能,这时就需要自己定制一下vim。定制vim很简单,进入~/下载/vim72/src文件,编辑Makefile文件。这是一个注释很好的文档,根据注释来选择:
编辑好此文件后,就可以编辑安装vim了。如果你需要更细致的定制vim,可以修改config.h文件,打开/关闭你想要的特性。
[ 编译安装 ]
编译和安装vim非常简单,使用下面两个命令:
make make install
你不需要手动运行./configure命令,make命令会自动调用configure命令。
上面的命令执行完后,vim就安装成功了。
我在编译时打开了”prefix = $(HOME)”选项,因此我的vim被安装在~/bin目录。这时需要修改一下PATH变量,以使其找到我编辑好的vim。在~/.bashrc文件中加入下面这两句话:
PATH=$HOME/bin:$PATH export PATH
退出再重新登录,现在再敲入vim命令,发现已经运行我们编译的vim了。
运行下面的命令,解压vimgdb的runtime文件到你的~/.vim/目录:
cd ~/下载/vimgdb/ tar zxf vimgdb_runtime.tgz -C ~/.vim/
现在启动vim,在vim中运行下面的命令以生成帮助文件索引:
:helptags ~/.vim/doc
现在,你可以使用”:help vimgdb“命令查看vimgdb的帮助了。
至此,我们重新编译了vim,并为之打上了vimgdb补丁。下面我以一个例子来说明如何在vim中完成”编码—编译—调试”一条龙服务。
可能会出现的一些问题:
1. 编译vim72时,需要安装terminal library 或 ncurses
checking for tgetent()… configure: error: NOT FOUND!
You need to install a terminal library; for example ncurses.Or specify the name of the library with –with-tlib
解决方法:离线安装terminal library就可以,如ncurses 或者,执行sudo apt-get install libncurses5-dev
我采用后者编译通过。
http://wenku.baidu.com/link?url=kBUbeLW6wEVRrDgoWaxrEAqyaz3UjzI69shh-yZK6pE-ay9C_Uq-4R16xofs3no5opdTtUnOMxsY4v-UswKnN_sm3J8WkZK0MdWgWnOY32m
2. 直接在vim官网上下的vim7.2,编译无报错,运行vim输出如下错误或类似错误:
*** buffer overflow detected ***: vim terminated
*** buffer overflow detected ***: gvim terminated
======= Backtrace: =========
/lib/libc.so.6(__fortify_fail+0x37)[0x7ffd4e4675f7]
/lib/libc.so.6[0x7ffd4e4665a0]
gvim[0x43e433]
gvim[0x43ef19]
gvim[0x43fcb0]
gvim[0x4481aa]
gvim[0x46602b]
gvim[0x4644f1]
gvim[0x4588c1]
gvim[0x5672a8]
gvim[0x553bb9]
gvim[0x5673d9]
gvim[0x49f498]
/lib/libc.so.6(__libc_start_main+0xfd)[0x7ffd4e38eabd]
gvim[0x40e9d9]
======= Memory map: ========
00400000-005d7000 r-xp 00000000 08:05 77232 /usr/local/bin/vim
007d6000-007d7000 r--p 001d6000 08:05 77232 /usr/local/bin/vim
007d7000-007ea000 rw-p 001d7000 08:05 77232 /usr/local/bin/vim
007ea000-007f5000 rw-p 00000000 00:00 0
0210f000-02225000 rw-p 00000000 00:00 0 [heap]
7ffd48298000-7ffd482ae000 r-xp 00000000 08:01 2220 /lib/libgcc_s.so.1
7ffd482ae000-7ffd484ad000 ---p 00016000 08:01 2220 /lib/libgcc_s.so.1
7ffd484ad000-7ffd484ae000 r--p 00015000 08:01 2220 /lib/libgcc_s.so.1
7ffd484ae000-7ffd484af000 rw-p 00016000 08:01 2220 /lib/libgcc_s.so.1
7ffd484af000-7ffd484d2000 r-xp 00000000 08:05 6753 /usr/lib/gtk-2.0/2.10.0/engines/libmurrine.so
7ffd484d2000-7ffd486d1000 ---p 00023000 08:05 6753 /usr/lib/gtk-2.0/2.10.0/engines/libmurrine.so
7ffd486d1000-7ffd486d2000 r--p 00022000 08:05 6753 /usr/lib/gtk-2.0/2.10.0/engines/libmurrine.so
7ffd486d2000-7ffd486d3000 rw-p 00023000 08:05 6753 /usr/lib/gtk-2.0/2.10.0/engines/libmurrine.so
7ffd486d3000-7ffd486db000 r-xp 00000000 08:05 3267 /usr/lib/libltdl.so.7.2.0
7ffd486db000-7ffd488db000 ---p 00008000 08:05 3267 /usr/lib/libltdl.so.7.2.0
7ffd488db000-7ffd488dc000 r--p 00008000 08:05 3267 /usr/lib/libltdl.so.7.2.0
7ffd488dc000-7ffd488dd000 rw-p 00009000 08:05 3267 /usr/lib/libltdl.so.7.2.0
7ffd488dd000-7ffd488ea000 r-xp 00000000 08:05 3548 /usr/lib/libtdb.so.1.1.5
7ffd488ea000-7ffd48ae9000 ---p 0000d000 08:05 3548 /usr/lib/libtdb.so.1.1.5
7ffd48ae9000-7ffd48aea000 r--p 0000c000 08:05 3548 /usr/lib/libtdb.so.1.1.5
7ffd48aea000-7ffd48aeb000 rw-p 0000d000 08:05 3548 /usr/lib/libtdb.so.1.1.5
7ffd48aeb000-7ffd48af0000 r-xp 00000000 08:05 3354 /usr/lib/libogg.so.0.6.0
7ffd48af0000-7ffd48cef000 ---p 00005000 08:05 3354 /usr/lib/libogg.so.0.6.0
7ffd48cef000-7ffd48cf0000 r--p 00004000 08:05 3354 /usr/lib/libogg.so.0.6.0
7ffd48cf0000-7ffd48cf1000 rw-p 00005000 08:05 3354 /usr/lib/libogg.so.0.6.0
7ffd48cf1000-7ffd48d10000 r-xp 00000000 08:05 3594 /usr/lib/libvorbis.so.0.4.0
7ffd48d10000-7ffd48f0f000 ---p 0001f000 08:05 3594 /usr/lib/libvorbis.so.0.4.0
7ffd48f0f000-7ffd48f10000 r--p 0001e000 08:05 3594 /usr/lib/libvorbis.so.0.4.0
7ffd48f10000-7ffd48f1e000 rw-p 0001f000 08:05 3594 /usr/lib/libvorbis.so.0.4.0
7ffd48f1e000-7ffd48f25000 r-xp 00000000 08:05 3598 /usr/lib/libvorbisfile.so.3.2.0
7ffd48f25000-7ffd49124000 ---p 00007000 08:05 3598 /usr/lib/libvorbisfile.so.3.2.0
7ffd49124000-7ffd49125000 r--p 00006000 08:05 3598 /usr/lib/libvorbisfile.so.3.2.0
7ffd49125000-7ffd49126000 rw-p 00007000 08:05 3598 /usr/lib/libvorbisfile.so.3.2.0
7ffd49126000-7ffd49135000 r-xp 00000000 08:05 2747 /usr/lib/libcanberra.so.0.1.7
7ffd49135000-7ffd49334000 ---p 0000f000 08:05 2747 /usr/lib/libcanberra.so.0.1.7
7ffd49334000-7ffd49335000 r--p 0000e000 08:05 2747 /usr/lib/libcanberra.so.0.1.7
7ffd49335000-7ffd49336000 rw-p 0000f000 08:05 2747 /usr/lib/libcanberra.so.0.1.7
7ffd49336000-7ffd4933d000 r-xp 00000000 08:01 2288 /lib/librt-2.10.1.so
7ffd4933d000-7ffd4953c000 ---p 00007000 08:01 2288 /lib/librt-2.10.1.so
7ffd4953c000-7ffd4953d000 r--p 00006000 08:01 2288 /lib/librt-2.10.1.so
7ffd4953d000-7ffd4953e000 rw-p 00007000 08:01 2288 /lib/librt-2.10.1.so
7ffd4953e000-7ffd49542000 r-xp 00000000 08:05 3125 /usr/lib/libgthread-2.0.so.0.2200.2
7ffd49542000-7ffd49741000 ---p 00004000 08:05 3125 /usr/lib/libgthread-2.0.so.0.2200.2
7ffd49741000-7ffd49742000 r--p 00003000 08:05 3125 /usr/lib/libgthread-2.0.so.0.2200.2
7ffd49742000-7ffd49743000 rw-p 00004000 08:05 3125 /usr/lib/libgthread-2.0.so.0.2200.2
7ffd49743000-7ffd49746000 r-xp 00000000 08:05 2745 /usr/lib/libcanberra-gtk.so.0.1.1
7ffd49746000-7ffd49946000 ---p 00003000 08:05 2745 /usr/lib/libcanberra-gtk.so.0.1.1
7ffd49946000-7ffd49947000 r--p 00003000 08:05 2745 /usr/lib/libcanberra-gtk.so.0.1.1
7ffd49947000-7ffd49948000 rw-p 00004000 08:05 2745 /usr/lib/libcanberra-gtk.so.0.1.1
7ffd49948000-7ffd4994d000 r-xp 00000000 08:05 6801 /usr/lib/gtk-2.0/modules/libcanberra-gtk-module.so
7ffd4994d000-7ffd49b4c000 ---p 00005000 08:05 6801 /usr/lib/gtk-2.0/modules/libcanberra-gtk-module.so
7ffd49b4c000-7ffd49b4d000 r--p 00004000 08:05 6801 /usr/lib/gtk-2.0/modules/libcanberra-gtk-module.so
7ffd49b4d000-7ffd49b4e000 rw-p 00005000 08:05 6801 /usr/lib/gtk-2.0/modules/libcanberra-gtk-module.so
7ffd49b4e000-7ffd49b71000 r--p 00000000 08:05 55938 /usr/share/locale-langpack/zh_CN/LC_MESSAGES/gtk20-properties.mo
7ffd49b71000-7ffd49b7d000 r-xp 00000000 08:01 2249 /lib/libnss_files-2.10.1.so
7ffd49b7d000-7ffd49d7c000 ---p 0000c000 08:01 2249 /lib/libnss_files-2.10.1.so
7ffd49d7c000-7ffd49d7d000 r--p 0000b000 08:01 2249 /lib/libnss_files-2.10.1.so
7ffd49d7d000-7ffd49d7e000 rw-p 0000c000 08:01 2249 /lib/libnss_files-2.10.1.so
7ffd49d7e000-7ffd49d88000 r-xp 00000000 08:01 2259 /lib/libnss_nis-
2.10.1.so
7ffd49d88000-7ffd49f87000 ---p 0000a000 08:01 2259 /lib/libnss_nis-2.10.1.so|49;0MVim: 拦截到致命信号(deadly signal) ABRT
Vim: 结束。
解决办法:终于解决问题了
参考如下
http://gcc.gnu.org/ml/gcc-bugs/2008-11/msg01317.html
貌似是gcc的升级造成的问题
解决办法是把Makefile 中设置 CFLAGS = -O2 -D_FORTIFY_SOURCE=1或 make时直接加参数
make CFLAGS="-O2 -D_FORTIFY_SOURCE=1"
如此一试,不行了,再
make CFLAGS="-O3 -D_FORTIFY_SOURCE=1"
如此一试
http://forum.ubuntu.org.cn/viewtopic.php?t=240806