在 Mac 山猫 10.8 中从代码编译安装 vim

Translations:  en

我在安装过程中遇到一些问题, 所以记录下来. 我安装的是 vim 7.4.

友情提醒!! 一定要等看完全文再动手实践! 因为当中有些问题是在后面阐述的!

我在 Max OS X Mountain Lion 10.8 上根据 hackercodex 安装了 python 和 hg.

安装过程中我参考了 Building Vim from source, 但是安装是在 Ubuntu 下的.

我把vim的代码放在 ~/.mybuild/ 目录下:

mkdir -p ~/.mybuild && cd ~/.mybuild

然后克隆vim的工程:

hg clone https://code.google.com/p/vim/
cd vim

再次提醒!!! 请先看完文章, 因为在配置前需要对源代码做一些修改. 然后如下配置, 如果您不是使用 vim 7.4, 请确保 VIMRUNTIMEDIR 是正确的 (例如, 对于 vim7.3, 使用/usr/local/share/vim/vim73):

./configure --with-features=huge --enable-rubyinterp --enable-pythoninterp --enable-perlinterp --enable-cscope --enable-multibyte
make VIMRUNTIMEDIR=/usr/local/share/vim/vim74

Vim 将被安装在 /usr/local/bin/, 我们可以看一下 vim 的代码配置文件或者输入命令 ./configure help. 一些选项主要在 src/auto/configure 文件中. 部分说明如下:

By default, 'make install' will install all the files in
'$ac_default_prefix/bin', '$ac_default_prefix/lib' etc.  You can specify
an installation prefix other than '$ac_default_prefix' using '--prefix',
for instance '--prefix=\$HOME'.

并且该文件对 ac_default_prefix 进行了赋值:

ac_default_prefix=/usr/local

由于 python 是安装在 /usr/local, 我也想将 vim 安装在该目录下. 不需要设置 --with-python-config-dir, 因为从 configure 执行结果来看, 该路径是正确的:

checking --enable-pythoninterp argument... yes
checking for python2... /usr/local/bin/python2
checking Python version... 2.7
checking Python is 2.3 or better... yep
checking Python's install prefix... /usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7
checking Python's execution prefix... /usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7
checking Python's configuration directory... /usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config

注意! 上述配置并不能完全起效, vim 使用的仍旧是系统的 python 而不是我们使用 brew 安装的 python. Google 好久之后找到了解决方案 solution!

我们查看源代码 ~/.mybuild/vim/src/auto/configure, 将如下行:

if test "x$MACOSX" = "xyes" && ${vi_cv_path_python} -c \"import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then
      vi_cv_path_python_plibs="-framework Python"

替换成:

if test "x$MACOSX" = "xyes" && ${vi_cv_path_python} -c \"import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then
      vi_cv_path_python_plibs="-F /usr/local/Cellar/python/2.7.5/Frameworks -framework Python"

注意到您的系统上路径名可能不是 /usr/local/Cellar/python/2.7.5/Frameworks. 因为我使用 brew 安装 python, python 的 config.c 文件在/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config/.

如果您已经不小心已经执行了 configure 和 make, 请先执行 make clean (如有必要可能还需要执行make distclean), 然后再重新 configure 和 make.

然后我们可以执行如下命令来安装, 不过我建议您先读完本文, 因为可能会遇到一些问题:

sudo make install

虽然直接安装能够通过, 并且 vim 似乎也是可以正确运行的. 但是我发现安装的过程中又几个错误. 不仔细的话你会发现不了:

sed: RE error: illegal byte sequence

我 google 了一个多小时, 只找到了解决方法, 但是没人解释这个问题. 所以先就这样解决吧.

执行 locale 命令如下结果:

LANG="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_CTYPE="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_ALL="en_US.UTF-8"

这是因为我之前在 ~/.bash_profile 中加入了:

export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8

我注释了这两行, 然后重新打开一个终端, 执行 locale:

LANG=
LC_COLLATE="C"
LC_CTYPE="en_US.UTF-8"
LC_MESSAGES="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_ALL=

但是 LC_CTYPE 仍旧部队, 所以我们需要执行 export LC_CTYPE="C", 然后执行 locale:

LANG=
LC_COLLATE="C"
LC_CTYPE="C"
LC_MESSAGES="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_ALL=

现在我们可以执行 sudo make install 了, 可以发现没有error啦!

Enjoy your vim!

PS: 你最好恢复 ~/.bash_profile 中刚刚注释的那两行.


Category: Mac

Tags: mac, vim, mountain lion, brew,

Translations:  en

在 Mac 山猫 10.8 中从代码编译安装 vim相关推荐

  1. Ubuntu20.10系统FreeCAD 0.19编译安装

    Ubuntu20.10系统FreeCAD 0.19编译安装 济南友泉软件有限公司 零.系统环境 root@test-HVM-domU:~# lsb_release -a No LSB modules ...

  2. mysql源 如何编译安装,MySQL5.7.22-源代码编译安装

    Centos下用cmake编译安装MySQL 5.7.22 环境:CentOS6.8 [root@li1164-33 mysql5722]# cat /etc/redhat-release CentO ...

  3. UE5编辑器中C++代码编译按钮在哪里?

    文章目录 1.出现问题 2.解决过程 3.参考资料 1.出现问题 之前在用UE4.27版本时,UE编辑器工具栏Play的旁边就有Compile工具,可以将C++新加入的代码进行编译,然后在蓝图中使用, ...

  4. linux ibus中文,Ubuntu 14.10系统中IBUS 中文输入法安装的图文教程

    IBUS 是 linux 下的输入框架,框架内的各种输入法是 Ubuntu 默认的非英文输入方式.新安装的 Ubuntu 系统,如果选择了中文环境,系统首次联网成功后,会提示用户下载 IBUS 下的拼 ...

  5. centos7.8中源码编译安装redis

    1.下载地址:http://www.redis.cn/download.html 2.所有版本地址:Index of /releases/ 我使用的是3.2.12版本 #1.上传文件到/opt文件目录 ...

  6. linux中源码编译安装mysql常见错误

    一) #./configure --prefix=/usr/local/mysql-5.1.54 (mysql指定路径安装报错:) 如下: checking for termcap functions ...

  7. php源码无法安装mysql_linux中源码编译安装mysql常见错误

    (一) #./configure --prefix=/usr/local/mysql-5.1.54 (mysql指定路径安装报错:) 如下: checking for termcap function ...

  8. linux-centos7中lnmp服务器编译安装含systemctl启动service(转)

    centos7 nginx  mysql  php 可以分开安装  然后在配置nginx互php的 先安装一些必要的库 ---------------------------------------- ...

  9. Nginx 1.5.2 + PHP 5.5.1 + MySQL 5.6.10 在 CentOS 下的编译安装

    最近配置了几台Web服务器,将安装笔记贴出来吧.没时间像以前那样,将文章写的那样系统了,请见谅.详细配置,可以看以前的旧文章:http://blog.zyan.cc/nginx_php_v61.安装N ...

最新文章

  1. Citrix XenServer 关键配置文件
  2. 怎么一键备份服务器系统还原,电脑怎么一键还原
  3. 数组中子数组的最大累乘积
  4. 自动化测试框架搭建-报告-4
  5. Docker常用命令、超实用、讲解清晰明了(rm、stop、start、kill、logs、diff、top、cp、restart ...)
  6. 为学好计算机 要采取什么措施,计算机概念教学的内容及对策
  7. 递归应用:折半查找法
  8. 智能互联网之数据存储实践
  9. Android:布局单位换算
  10. 安徽2022农民丰收节 国稻种芯:郑栅洁启动舒城主场活动仪式
  11. 深入理解短时傅里叶变换 STFT + Python 代码详解
  12. 【架构风格 架构模式 设计模式 概念】
  13. 5G已开始商用 目前提供5G商用服务的国家有哪些?
  14. 屠龙传说世界【全自动】辅助脚本
  15. 再议访问者模式 - Visitor vs Acyclic Visitor
  16. Virt-manager安装
  17. Harbor安装教程-完全根据官方文档2.6.0版本
  18. matlab画出玫瑰线,数学实验 玫瑰线的绘制
  19. 【解决方案】A session ended very soon after starting. Check that the command in profile “XXX” is correct.
  20. 为什么65535是极值

热门文章

  1. 【C 语言之项目实战】生成随机数并排序(详细版)
  2. QQ个人文件夹保存位置无效
  3. Linux | crontab定时任务及开机自启项
  4. 1367 二叉树中的列表(递归)
  5. Oracle DBlink创建访问远程数据库
  6. Ubuntu下开机禁用笔记本触摸板
  7. jQuery—常用API(jQuery 属性操作、jQuery 文本属性值、jQuery 元素操作)
  8. 记录徒手解决cranberry病毒的过程
  9. 使用jflash可以将芯片flash中的程序(16进制格式)读出来 jflsah软件在jlink驱动包里面
  10. 开发工具---Eclipse 教程Ⅰ