文档章节

Ubuntu14.04下编译安装Vim74+Vim-gdb

henry-zhang
 henry-zhang
发布于 2015/06/08 15:20
字数 1490
阅读 1845
收藏 6

一、准备工作

1、下载Vim74和适合7.4版本的vim-gdb:

(1)vim7-4.tar.bz2

(2)vimgdb-for-7.4

2、卸载已存在的vim以及相关组件

        如果已经通过软件中心安装了vim,则需要将其卸载

sudo apt-get remove vim vim-runtime gvim

可能还需要移除以下的包:

sudo apt-get remove vim-tiny vim-common vim-gui-common

3、安装依赖环境

        手动编译安装Vim74,首先先安装编译所需的依赖库和头文件。

sudo apt-get build-dep vim

然后再编译,如果依赖问题没有解决可能会出现这个提示:

no terminal library found  
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.

也可手动安装以下的库等解决依赖,为了保险起见,最好还是执行一下。

sudo apt-get install libncurses5-dev libgnome2-dev libgnomeui-dev libgtk2.0-dev libatk1.0-dev libbonoboui2-dev libcairo2-dev libx11-dev libxpm-dev libxt-dev python-dev ruby-dev mercurial

二、不需要vimgdb的Vim安装

       将下载的vim74源码包解压出来,进入解压出来的文件目录,编译

cd ~/downloads/vim74/  
 ./configure --with-features=huge --enable-rubyinterp --enable-pythoninterp --with-python-config-dir=/usr/lib/python2.7/config-x86_64-linux/ --enable-perlinterp --enable-gui=gtk2 --enable-cscope --enable-luainterp --enable-multibyte --enable-xim --prefix=/usr

参数说明:

--with-features=huge:支持最大特性

--enable-rubyinterp:启用Vim对ruby编写的插件的支持
--enable-pythoninterp:启用Vim对python编写的插件的支持
--enable-luainterp:启用Vim对lua编写的插件的支持
--enable-perlinterp:启用Vim对perl编写的插件的支持
--enable-multibyte 和 --enable-xim:需要在Vim中输入中文,开启这两个特性
--enable-cscope:Vim对cscope支持
--enable-gui=gtk2:gtk2支持,也可以使用gnome,表示生成gvim
--with-python-config-dir=/usr/lib/python2.7/config-x86_64-linux-gnu/ 指定 python 路径,这是python2在ubuntu64位机子上的路径,32位应该为/usr/lib/python2.7/config-i386-linux-gnu/

--prefix=/usr:设定编译安装路径,注意自己是否有权限访问。

        如果configure出错,先用make distclean清除之前configure产生的文件再configure。

        最后make一下然后安装,因为设定的路径/usr普通用户不具有写入权限,所以需要以sudo来安装。

可以不指定VIMRUNTIMEDIR,则只要执行make就好。

make VIMRUNTIMEDIR=/usr/share/vim/vim74
sudo make install

如果想要卸载,suo make uninstall以下就好。

检验自己是否安装成功,可以运行vim --version来看看,可以检查某些特性是否已经开启。有加号的表示特性已开启。

三、带有vimgdb的vim安装

1、安装vim

        将vim74的源码包和vimgdb的补丁包都解压到ome的Downloads下

:~/Downloads$ ls  
vim74  
vim-7.4.tar.bz2  
vimgdb-for-vim7.4-master  
vimgdb-for-vim7.4-master.zip

然后切换到当前目录下,打补丁

patch -p0 < vimgdb-for-vim7.4-master/vim74.patch

接下来切入到vim74/src,make安装。

cd vim74/src  
make  
sudo make install

默认的当前目录下Makefile设置的特性等都能满足一般需求,如果需要添加路径或做些修改等,只要对这个文件进行编辑就好。我将里面的路径改动了,因为默认的/opt/bin这个路径不在我的$PATH里面,而默认却将vim的bin文件放在这里,导致执行vim会找不到命令。如果不作修改,可以将此路经添加到$PATH里面就好。

打开之,搜索/opt,按照注释的说明,将BINDIR, MANDIR, DATADIR这三行注释掉即可。改完之后的这三行如下:

# Uncomment the next line to install Vim in "/usr/bin"
#BINDIR   = /opt/bin
# Uncomment the next line to install Vim manuals in "/usr/share/man/man1"
#MANDIR   = /opt/share/man
# Uncomment the next line to install Vim help files in "/usr/share/vim"
#DATADIR  = /opt/share

然后make安装。我在我的ubuntu上虽然安装成功,但是执行vim失败,出现“Vim:Caught deadly signal ABRT”之类的错误。解决方法是在make是添加CFLAGS="-O2 -D_FORTIFY_SOURCE=1",则为:

make CFLAGS="-O2 -D_FORTIFY_SOURCE=1"

然后再执行sudo make install,则最后将vim安装到/usr/local/share/vim/vim74下。

        如果想要通过执行configure设置一些特性和安装路径,那么记得加--enable-gdb,且是在vim74/src目录下执行,不是上面不添加vimgdb的直接在vim74目录下执行configure

./configure --with-features=huge --enable-rubyinterp --enable-pythoninterp --with-python-config-dir=/usr/lib/python2.7/config-x86_64-linux/ --enable-perlinterp --enable-gui=gtk2 --enable-cscope --enable-luainterp --enable-multibyte --enable-xim --enable-gdb --prefix=/usr

再检查一下Makefile里面的BINDIR, MANDIR, DATADIR ,保证将它们三行注释了。然后make,添加VIMRUNTIMEDIR,以及安装:

make VIMRUNTIMEDIR=/usr/share/vim/vim74 CFLAGS="-O2 -D_FORTIFY_SOURCE=1"  
sudo make install

最后安装完了的vim的目录在/usr/share/vim/vim74下。
        运行vim --version检查以下gdb这一项特性前是否有加号,如果有,则表示vimgdb安装成功。

2、安装vimgdb运行环境

    修改一下(cd ~/.vimrc 或 cd /home/用户名/.vimrc)主目录下的.vimrc(没有则创建一个)

    加入

    let g:vimgdb_debug_file = ""
    run macros/gdb_mappings.vim
    map <F2> :run macros/gdb_mappings.vim<CR>
    这里说明一下,因为vimgdb的快捷键F7跟c-support有冲突,所以我改了一下,
    这样可以在需要的时候按F2载入vimgdb的map,然后F7就可以正常工作了。


    最后再修改下
       sudo gedit /usr/share/vim/vim74/macros/gdb_mappings.vim文件,
       把最后一行“call s:Toggle()”注释掉,前面加一个英文的双引号即为注释。

       将vimgdb-for-vim7.4-master/vimgdb_runtime下的文件复制到运行时路径(runtime path)。可以在vim里面执行:set runtimepath?来找到runtimepath。通过执行echo $VIMRUNTIME来查看安装路径。可以看到有好几个路径,~/.vim是当前用户下的,/usr/share/vim/vim74是所有用户的(这是设置了安装路径之后的,默认的路径应该在/usr/share/vim/vim74)。

然后切换到刚才选择将vim runtime路径,打开vim,执行“:helptags .”(注意,没有引号,helptags后面有一个空格和点,点表示当前目录。),这样就能使用“:help vimgdb”来打开vimgdb的帮助文档。

四、参考文档

1、Building Vim from source

2、vimgdb-for-vim7-4

3、vi/vim使用进阶: 在VIM中使用GDB调试 – 使用vimgdb

4、添加vimgdb导致vim虽成功安装却不能运行的解决办法

5、vim crashes on startup when compiled with -O3 but works with -O2


本文转载自:

henry-zhang
粉丝 2
博文 62
码字总数 1431
作品 0
海淀
私信 提问
加载中

评论(1)

b
beixue887899
不错
ubuntu编译最新版本WebKit

好久都没更新webkit 源码在ubuntu上编译了,网上搜了一下,基本上都是早期编译的webkit版本。可能是大家都去搞高大上的谷歌浏览器了吧。 今天就以ubuntu14.04版本作为编译环境来讲讲webkit编...

yistn
2015/04/22
0
3
ubuntu编译最新版本WebKit

好久都没更新webkit 源码在ubuntu上编译了,网上搜了一下,基本上都是早期编译的webkit版本。可能是大家都去搞高大上的谷歌浏览器了吧。 今天就以ubuntu14.04版本作为编译环境来讲讲webkit编...

lonely1986
2015/04/22
0
1
Ubuntu编译安装最新的webkit

好久都没更新webkit 源码在ubuntu上编译了,网上搜了一下,基本上都是早期编译的webkit版本。可能是大家都去搞高大上的谷歌浏览器了吧。 今天就以ubuntu14.04版本作为编译环境来讲讲webkit编...

东辉在线
2015/04/22
0
0
c++中 cin 不能多次使用么?

在一个for循环中cin输入为什么不可以? ubuntu14.04 vim 7.4 我用gdb调试第一次输入之后每到cin的地方不会等待输入是为什么?我的程序停不下来啊!! 本来我使用:cin >>p >>e >> i>>d;后来改成如...

llwwzz
2014/08/14
1K
9
使用Qt Creator作为Linux IDE,代替Vim:实现两台Linux电脑远程部署和调试(一台电脑有桌面系统,一台电脑无桌面系统)

尊重作者,支持原创,如需转载,请附上原地址:http://blog.csdn.net/libaineu2004/article/details/62423830 序言 考虑到程序员在无桌面Linux的环境下编写C/C++程序,如果使用原生的Vim编辑...

libaineu2004
2017/03/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Android Camera原理之camera service与camera provider session会话与capture request轮转

上层调用CameraManager.openCamera的时候,会触发底层的一系列反应,之前我们分享过camera framework到camera service之间的调用,但是光看这一块还不够深入,接下来我们讨论一下camera serv...

天王盖地虎626
11分钟前
0
0
科技赋能成效显著!金融壹账通两大赋能项目荣获IDC大奖

7月19日,2019IDC中国未来金融论坛曁颁奖典礼于北京举办。由金融壹账通赋能的长春农商银行多人视频面审智能风控系统、包头农商银行互联网银行SaaS服务两大项目因在项目的创新性、技术领先性、...

IFTNews
昨天
0
0
HTTP协议

HTTP简介 HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准。 HTTP是一个基于TCP/IP通信协议来传递数据...

Eappo_Geng
昨天
1
0
聊聊spring cloud consul的TtlScheduler

序 本文主要研究一下spring cloud consul的TtlScheduler TtlScheduler spring-cloud-consul-discovery-2.1.2.RELEASE-sources.jar!/org/springframework/cloud/consul/discovery/TtlSchedule......

go4it
昨天
0
0
内存狂挤牙膏Intel跪了!10nm玩出6种花样

不同于CPU处理器等逻辑芯片的制造工艺都精确到具体数值,闪存、内存工艺一直都是很模糊的叫法,比如10nm-class(10nm级别),只是介于20nm和10nm之间,然后又分为1xnm、1ynm、1znm等不同版本,...

linuxCool
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部