尝试在OS X上编译vim?

5

按照这篇文章的指导进行操作...

编译后的二进制文件似乎运行良好,但安装后的二进制文件失败了(在运行make install时)。

似乎是在以下步骤出现了问题:

...
generating help tags
/usr/local/bin/vim -u NONE -esX -c "helptags ++t ." -c quit
dyld: Symbol not found: _environ
  Referenced from: /Users/neezer/.rvm/rubies/ruby-1.9.2-p0/lib/libruby.1.9.1.dylib
  Expected in: flat namespace
 in /Users/neezer/.rvm/rubies/ruby-1.9.2-p0/lib/libruby.1.9.1.dylib
make[2]: *** [vimtags] Trace/BPT trap
make[1]: [installrtbase] Error 2 (ignored)

我用这个来配置:

./configure --prefix=/usr/local --enable-rubyinterp --enable-gui=no --disable-gpm

就像我所说的那样,我认为它编译正确了,因为在make之后我可以很好地运行./src/vim(没有错误)。但是当我尝试在/usr/local/bin/vim中使用make install安装后运行已安装版本时,我得到了这个错误(如上所述):

dyld: Symbol not found: _environ
  Referenced from: /Users/neezer/.rvm/rubies/ruby-1.9.2-p0/lib/libruby.1.9.1.dylib
  Expected in: flat namespace
 in /Users/neezer/.rvm/rubies/ruby-1.9.2-p0/lib/libruby.1.9.1.dylib
[1]    13175 trace trap  vim

运行which vim命令可以验证它正在尝试加载位于/usr/local/bin/vim的新二进制文件。
我的当前Ruby版本是ruby 1.9.2p0 (2010-08-18 revision 29036) [x86_64-darwin10.5.0],使用了RVM
这里发生了什么?
不,我不想使用MacVim...
3个回答

7

博客文章中明确指出:

如果你使用的是Snow Leopard系统,且想要集成Ruby 1.9.x,那么你可能会遇到一个(目前)没有很好记录的问题:Vim 7.2不支持这种集成。

这个帖子中有更多信息可供参考。

但总体来说,你需要链接到Snow Leopard自带的版本——Ruby 1.8.7。


啊,好的。在编译或版本检查期间我从未遇到过那个错误,但是尝试在新编译的二进制文件中运行Command-T时却出现了问题。由于“二进制文件启动[没有任何错误]”,我已经开始“为自己的厉害而欢呼”,并没有想到这也适用于我,但运行Command-T证明这是一个过早的庆祝。采取这些额外的步骤解决了问题。博客文章有点不清楚...我会写信给作者的。谢谢。 - neezer
谢谢。同样的问题 - 虽然多亏了 RVM - 我能够简单地切换到安装的 1.8.7 版本的 Ruby,一切都很好。 - Blue Waters
我使用 $ rvm use 1.8.7 进行了切换,但仍然得到以下结果:$ ruby -v ruby 1.8.7 (2011-06-30 patchlevel 352) [i686-darwin10.8.0] Coltrane:ggspree joe$ brew install https://raw.github.com/adamv/homebrew-alt/master/duplicates/vim.rb $ which ruby /Users/joe/.rvm/rubies/ruby-1.8.7-p352/bin/ruby Coltrane:ggspree joe$ vim --version | grep ruby dyld: Symbol not found: _environ Referenced from: /Users/joe/.rvm/rubies/ruby-1.9.2-p290/lib/libruby.1.9.1.dylib Expected in: flat namespace in /Users/joe/.rvm/rubies/ruby-1.9.2-p290/lib/libruby.1.9.1.dylib --- 不确定该怎么办? - Joe Sak

6
Vim无法使用Ruby 1.9.X编译(可能会在未来修复)。如果您想要使用Ruby集成,必须使用Ruby 1.8.X进行编译。
如果您使用的是rbenv而不是rvm,可以切换到ruby 1.8.7或在您的.zshenv或.bash_profile文件中禁用rbenv,重新编译vim并再次启用当前的ruby。这对于OSX 10.6也适用。我只在OSX 10.7和10.8上测试过此解决方案。
对于zsh和rbenv:
# disable in your .zshenv for compile time. Just comment it out for comile time.
# eval "$(rbenv init -)"

对于 bash 和 rbenv:

# disable in .bash_profile or .bashrc for compile time. Just comment it out for comile time.
# eval "$(rbenv init -)"

对于rvm,您可以切换到系统ruby(osx),重新编译,然后切换回来。

rvm use system
brew uninstall vim
brew install vim
rvm use 1.9.3

0

我建议使用MacPorts; 然后编译vim变得更加容易:

$ sudo port install vim

编辑:更正;您需要 Ruby 模式:

$ sudo port install vim +ruby

MacPorts会自动获取所有依赖项并自行解决所有问题。


2
我不再使用MacPorts,而是改用Homebrew。我发现有一个替代公式可以包含7.3和ruby/python支持的vim,但在运行Ruby 1.9.2时遇到了问题,所以我正在尝试降级到1.9.1来看是否解决了这个问题... brew install https://github.com/adamv/homebrew-alt/raw/master/duplicates/vim.rb - neezer
有趣的。我以前没有见过Homebrew,但它看起来不错。如果MacPorts让人烦恼起来,我会尝试使用它。 - trojanfoe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接