Ruby命令-t SEGV

say*_*yth 5 ruby vim rake ubuntu-11.10

我在ubuntu 11.10上安装并运行了vim-gnome.使用vundle并安装了seeral软件包.

我已经安装了命令-t但是在编译C扩展之前它不会起作用.阅读手册这是解决方案.

  rake make
Run Code Online (Sandbox Code Playgroud)

对我来说,位置实际上是:

~/.vim/bundle/command-t
Run Code Online (Sandbox Code Playgroud)

无论如何,所以我关闭了rvm并按照命令-t帮助指南中的建议安装了系统1.8.我检查了文档,命令错误的最常见原因是编译错误的ruby.

所以我找到了这个命令来检查编译版本.

renshaw@renshaw-TravelMate-5740G:~/.vim/bundle/command-t$ ldd `which vim` | grep ruby
libruby1.8.so.1.8 => /usr/lib/libruby1.8.so.1.8 (0x00007f913932c000)
Run Code Online (Sandbox Code Playgroud)

所以我为ruby 1.8安装了rake并使用rake make编译

renshaw@renshaw-TravelMate-5740G:~/.vim/bundle/command-t$ sudo rake make
/usr/bin/ruby1.8 extconf.rb
checking for ruby.h... yes
Run Code Online (Sandbox Code Playgroud)

然后它去编译.

但是启动gvim并运行\ t for command -t和

Vim: Caught deadly signal SEGV
Vim: Finished.
Segmentation fault
Run Code Online (Sandbox Code Playgroud)

如何在ubuntu 11.10上执行命令?

更新.

使用来源建立Gvim

hg clone https://vim.googlecode.com/hg/ vim
cd vim
sudo ./configure --enable-rubyinterp=yes --enable-pythoninterp=yes --enable-gui=gtk2
make 
make install

vim --version | grep ruby
Run Code Online (Sandbox Code Playgroud)

vim version命令返回正确的ruby支持是针对我安装的系统1.8构建的,但在使用命令T时它仍然是SEGV.

所以找到并尝试了这个

cd ~/.vim/ruby/command-t
/usr/bin/ruby extconf.rb
make
Run Code Online (Sandbox Code Playgroud)

这也失败了.然后我将其从之前的支持票证添加到bashrc.

vim() {
    (unset GEM_PATH GEM_HOME; command vim "$@")
}
Run Code Online (Sandbox Code Playgroud)

Sea*_*ean 13

使用rake任务时遇到了类似的问题.我通过自己编译扩展来解决它.

从command-t插件目录:

rvm use system    
cd ruby/command-t
ruby extconf.rb
make
sudo make install
Run Code Online (Sandbox Code Playgroud)

  • 这确实编译但我仍然最终得到相同的分段错误. (3认同)