在Mac OSX Lion上编译MacVim
- 22 Aug 2011
- Posted in vim
最近在整理和更新Vim的插件,发现blogit.vim这个插件已经在一个角落里面很久了。由于这个插件调用了Vim内嵌Python代码,但是我系统的Vim是没有带Python编译的,因此每次启动vim的时候,会先报一堆找不到Python指令的错误。忍了很久,今天终于拿了vim的源码,并且把Python/Ruby解释器全部编译了进来。做完发现MacVim也是很久没有更新了,顺便也pull了一下源码,按照官网说明更新:
$ git checkout snapshot-61
$ cd src
$ ./configure --with-features=huge
--enable-rubyinterp
--enable-pythoninterp
$ make
$ open MacVim/build/Release/MacVim.app
REXML could not parse this XML/HTML:
<p>编译很顺利,但是在使用blogit插件时候,MacVim直接挂了,提示:
<pre code="shell">
Vim: Caught deadly signal SEGV
Vim: Finished.
Segmentation fault: 11
</pre>
由于之前这个插件是好的,所以我怀疑是我编译时候出了问题。Vim的插件开发和调试没有什么经验,不过官网给了debug和生成日志的<a href="https://github.com/b4winckler/macvim/wiki/Debugging">步骤</a>
按照给出的方法,找到了日志中看上去像是问题的地方:
<pre>
Aug 22 15:11:27 Zeus.local MacVim[96992] <Debug>:
-[MMVimController(Private) connectionDidDie:]@1333: NSConcreteNotification 0x7f88d8ee0020 {name = NSConnectionDidDieNotification; object = connection 0x7f88d8e444a0 is invalid}
</pre>
不过看不明白,不知道具体什么问题导致,如果有经验的朋友看到了请指教!</p>
其实MacVim提供了最新Lion系统上的一个编译版本(snapshot61),虽然我比较喜欢native compiling的软件,现在只好拿人家的编译下来看看。下载下来解压缩试用了一下,居然插件工作的很好。立马看了一下版本信息:
$ ./mvim --version再和我自己的版本做了一下比较,只是发现在link时候多了两个参数。我又仔细看了一下configure的帮助,最终发现我漏了一个--with-macsdk=参数。于是,在make uninstall后从新configure了一把,然后make,试用成功!
这是我最后编译的语句:
./configure --with-features=huge --enable-multibyte --enable-pythoninterp=yes
--enable-rubyinterp=yes --enable-perlinterp=yes --with-macsdk=10.6