系统:CentOs6.9

gcc版本:5.1.0

github上拉取vim工程之后,cd src,执行一下命令:

$ ./configure
$ sudo make
gcc -c -I. -Iproto -DHAVE_CONFIG_H -g -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE= -o objects/arabic.o arabic.c
gcc: error trying to exec 'cc1': execvp: No such file or directory
make: *** [objects/arabic.o] Error

发现找不到cc1。全局找下cc1在哪:

$ sudo find / -name cc1
/usr/local/libexec/gcc/x86_64-unknown-linux-gnu/5.1./cc1
/usr/libexec/gcc/x86_64-redhat-linux/4.4./cc1
/root/software/gcc-5.1-build/gcc/cc1
/root/software/gcc-5.1-build/stage1-gcc/cc1
/root/software/gcc-5.1-build/prev-gcc/cc1

建立一个软连接:

$ sudo ln -s /usr/local/libexec/gcc/x86_64-unknown-linux-gnu/5.1./cc1 /usr/bin/cc1

重新编译一下:

$ sudo make
gcc -c -I. -Iproto -DHAVE_CONFIG_H -g -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE= -o objects/arabic.o arabic.c
In file included from os_unix.h::,
from vim.h:,
from arabic.c::
/usr/include/stdio.h::: fatal error: stddef.h: No such file or directory
compilation terminated.
make: *** [objects/arabic.o] Error

发现还是有问题,而且这个报错报在了库文件

全局找下这个文件:

$ sudo find / -name stddef.h
/usr/local/lib/gcc/x86_64-unknown-linux-gnu/5.1./include/stddef.h
/usr/include/linux/stddef.h
/usr/lib/gcc/x86_64-redhat-linux/4.4./include/stddef.h
/root/software/gcc-5.1-build/gcc/include/stddef.h
/root/software/gcc-5.1-build/stage1-gcc/include/stddef.h
/root/software/gcc-5.1-build/prev-gcc/include/stddef.h
/root/software/gcc-5.1./gcc/ginclude/stddef.h
/root/software/gcc-5.1./libstdc++-v3/include/c_compatibility/stddef.h

发现是能找到,不过报错的文件的位置,是/usr/include/stdio.h,感觉是路径问题了。

尝试用sudo权限运行./configure:

$ sudo ./configure
configure: loading cache auto/config.cache
checking whether make sets $(MAKE)... (cached) yes
checking for gcc... (cached) gcc
checking whether the C compiler works... no
configure: error: in `/home/haiming.li/opensource/vim/src':
configure: error: C compiler cannot create executables
See `config.log' for more details

同样通过find命令,找到config.log所在的位置是src/auto下面,打开看看:

感觉很莫名的报错,而且为何sudo与非sudo执行的时候结果差别那么大呢?

猜测是sudo的gcc跟非sudo下的gcc,版本不一致,尝试验证下:

$ which gcc
/usr/local/bin/gcc $ sudo which gcc
/usr/bin/gcc

果然,sudo和非sudo下,gcc调用的执行程序不一样。/usr/local/bin/gcc --version 和 /usr/bin/gcc --version的执行结果是一样的,这个比较莫名。不过如果做下软连接,我相信能解决问题。

先对原来的/usr/bin下的gcc做下备份:

$ cd /usr/bin/
$ sudo mv gcc gcc_bak
$ sudo ln -s /usr/local/bin/gcc gcc

继续:

$ ./configure
$ sudo make

然后报了类似这样的错误:

/opt/local/bin/gcc-mp-4.8 -c -I. -Iproto -DHAVE_CONFIG_H   -I/usr/local/include  -g -O2 -D_FORTIFY_SOURCE=       -o objects/buffer.o buffer.c
In file included from vim.h::,
from buffer.c::
auto/osdef.h::: error: conflicting types for 'printf'
extern int printf __ARGS((char *, ...));

google之后,只发现了一个日文网页,而且说得好像不是一个问题,灵机一动下,make clean了一下,然后make就通过了,接着

$ sudo make install

执行下vim:

$ vim
-bash: /usr/bin/vim: No such file or directory

在编译日志里面找了找,感觉vim应该是在/usr/local/bin/vim:

$ /usr/local/bin/vim --version
VIM - Vi IMproved 8.1 ( May , compiled May ::)
Included patches: -... 果然在这里,做下软连接:
$ sudo ln -s /usr/local/bin/vim /usr/bin/vim

OK,大功告成,手动编译vim8.1搞定。

Centos手动编译安装vim8的更多相关文章

  1. CentOS手动编译安装gcc

    最近尝试了fedora.ubuntu.mint.debian.opensuse等多种linux发行版,与CentOS比较之后还是感觉之前用的CentOS比较熟悉,比较习惯.现在CentOS的最新版本为 ...

  2. centos手动编译安装apache、php、mysql

    64位centos 5.5手动安装lamp,要求curl.json.pdo_mysql.gd,记录如下. centos 5.4.5.5.5.6的内核都是2.6.18,都可以安装php 5.3. 卸载旧 ...

  3. LNAMP服务器环境搭建(手动编译安装)

    LNAMP服务器环境搭建(手动编译安装) 一.准备材料 阿里云主机一台,操作系统CentOS 6.5 64位 lnamp.zip包(包含搭建环境所需要的所有软件) http://123.56.144. ...

  4. centos mysql 编译安装

    centos mysql 编译安装 1.安装 创建MySQL用户 sudo useradd mysql 下载MySQL的源码包,我们这里使用的时5.5.18 安装依赖 sudo yum -y inst ...

  5. web服务器学习1---httpd-2.4.29源码手动编译安装

    环境准备: 系统:CentOS 7.4 软件:httpd-2.4.29 一  Apache主要特点 apache服务器在功能,性能和安全性等方面表现比较突出,可以较好地满足web服务器地应用需求.主要 ...

  6. 手动编译安装tmux

    tmux的好处就不多说了,总之是多屏管理的神器.通常我们用系统通用的安装方式可以安装到tmux,但有时候,安装到的可能不是我们所需要的版本,又或者软件源里面没有带tmux.这个时候就需要手动编译安装了 ...

  7. centos下编译安装lnmp

    centos下编译安装lnmp 本文以centos为背景在其中编译安装nginx搭建lnmp环境. 编译安装nginx时,需要事先安装 开发包组"Development Tools" ...

  8. CentOS 7 编译安装 Code::Blocks

    CentOS 7 编译安装 Code::Blocks yum install cairo-devel yum install pango-devel yum install atk-devel yum ...

  9. Debian/Ubuntu手动编译安装MongoDB C++11驱动及驱动测试

    本文章仅限cnblogs网站内转载!请某网站自觉,遵纪守法,尊重原创! 系统环境情况: 最小化.无桌面环境 新安装的Debian 8 Server 版本操作系统虚拟机一台 手动编译安装MongoDB ...

随机推荐

  1. 使用RateLimiter完成简单的大流量限流,抢购秒杀限流

    RateLimiter是guava提供的基于令牌桶算法的实现类,可以非常简单的完成限流特技,并且根据系统的实际情况来调整生成token的速率. 通常可应用于抢购限流防止冲垮系统:限制某接口.服务单位时 ...

  2. iOS开发之谓词Predicate和对象数组的排序

    我们在开发中经常使用的Predicate谓词,主要是正则表达式的使用,今天给大家简单的讲讲怎样去使用谓词. 因为内容比较简单,所以直接上代码展示: NSMutableArray *people_arr ...

  3. HAWQ取代传统数仓实践(七)——维度表技术之维度子集

    有些需求不需要最细节的数据.例如更想要某个月的销售汇总,而不是某天的数据.再比如相对于全部的销售数据,可能对某些特定状态的数据更感兴趣等.此时事实数据需要关联到特定的维度,这些特定维度包含在从细节维度 ...

  4. TCP的保活定时器 转

    http://blog.csdn.net/zhangskd/article/details/44177475 TCP的Keepalive,目的在于看看对方有没有发生异常,如果有异常就及时关闭连接. 当 ...

  5. 如何突破JAVA程序员三年的门槛

    第一阶段:三年 我认为三年对于程序员来说是第一个门槛,这个阶段将会淘汰掉一批不适合写代码的人.这一阶段,我们走出校园,迈入社会,成为一名程序员,正式从书本 上的内容迈向真正的企业级开发.我们知道如何团 ...

  6. 你真的对java static了解吗,代码优化可能更加简单

    static修饰的成员变量和成员方法独立于该类的任何对象.也就是说,它不依赖类特定的实例,被类的所有实例共享. 只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们.因此,s ...

  7. (一)java概述

    1.Java1995年斯坦福大学网络公司推出的一门高级语言.一种面向网络,完全的面向对象,完全可靠跨平台的语言.      java:一种面向对象的高级语言           将现实生活中的事物以及 ...

  8. Android 拍照或从相册取图片并裁剪

    在Android中,Intent触发Camera程序,拍好照片后,将会返回数据,但是考虑到内存问题,Camera不会将全尺寸的图像返回给调用的Activity,一般情况下,有可能返回的是缩略图,比如1 ...

  9. HihoCoder 1122二分图二 ---最大匹配之匈牙利算法

    二分图二•二分图最大匹配之匈牙利算法 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 上一回我们已经将所有有问题的相亲情况表剔除了,那么接下来要做的就是安排相亲了.因为过 ...

  10. js的搜索框

    第一种  单独一个form表单提交 <div class="hc-prm-search search flr"> <form action="/user ...