【问题标题】:Trying to compile vim on OS X?试图在 OS X 上编译 vim?
【发布时间】:2011-09-01 03:29:06
【问题描述】:

关注this writeup...

编译后的二进制文件似乎工作正常,但安装的二进制文件失败(运行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...

【问题讨论】:

    标签: macos vim compilation


    【解决方案1】:

    在博文中说得对:

    您可能遇到了一个(目前)没有很好记录的问题:Vim 7.2 不支持在 Snow Leopard 上集成 Ruby 1.9.x。

    this ticket 中提供了更多信息。

    但总而言之,您必须链接到 Ruby 1.8.7,无论如何,它都是 Snow Leopard 附带的版本。

    【讨论】:

    • 啊,好的。在编译或版本检查期间我根本没有遇到该错误,但是尝试在新编译的二进制文件中运行 Command-T 时抛出了它。作为“没有任何错误的二进制启动[ed]”,我已经开始“为自己的伟大感到高兴”,并没有想到这适用于我,但运行 Command-T 证明这是一个过早的庆祝活动。采取这些额外的步骤解决了这个问题。有点不清楚的博客文章……会写信给作者。谢谢。
    • 谢谢。同样的问题 - 尽管感谢 RVM - 我能够简单地切换到 1.8.7 安装的 ruby​​ 并且一切都很好。
    • 我确实使用 $ 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 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:找不到符号:_environ 引用自:/Users/joe/.rvm/rubies/ruby-1.9.2-p290/lib/libruby.1.9.1.dylib 预期在:/Users/joe/ 中的平面命名空间.rvm/rubies/ruby-1.9.2-p290/lib/libruby.1.9.1.dylib ---不知道该怎么办?
    【解决方案2】:

    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
    

    【讨论】:

      【解决方案3】:

      我建议使用MacPorts;那么编译vim就变成了:

      $ sudo port install vim
      

      编辑:更正;你需要红宝石模式:

      $ sudo port install vim +ruby
      

      然后,MacPorts 将获取所有依赖项并自行解决所有令人头疼的问题。

      【讨论】:

      • 我不再使用 MacPorts,而是使用 Homebrew。我发现 vim 有一个替代公式,包括 7.3 和 ruby​​/python 支持,但是遇到了关于 Ruby 1.9.2 的问题,所以我试图降级到 1.9.1 看看是否能解决它......安装github.com/adamv/homebrew-alt/raw/master/duplicates/vim.rb
      • 有趣;我以前没见过 Homebrew,但它看起来不错。如果 MacPorts 变得烦人,我会检查一下 :)
      猜你喜欢
      • 2011-09-23
      • 1970-01-01
      • 2012-05-01
      • 2016-11-04
      • 1970-01-01
      • 1970-01-01
      • 2016-05-04
      • 1970-01-01
      相关资源
      最近更新 更多