天天看点

CentOS7.5安装GCC8.2.0+VIM8.1+Python3.7.0+LLVM7.0+VIM自动填充代码插件YouCompleteMe完整版

文章目录

    • 1 环境
    • 2 安装YouCompleteMe前准备工作
      • 2.1 编译安装gcc 8.2.0
      • 2.2 编译安装vim8.1和Python3.7
    • 3 正式安装YouCompleteMe
      • 3.1 安装vundle插件
      • 3.2 编译安装LLVM+CLang+CMake
      • 3.3 编译构建ycm_core库

1 环境

首先查看centos7版本信息,我的版本是64位、7.5.1804(目前最新版本):

cat /etc/centos-release
uname -r
getconf LONF_BIT
           
CentOS7.5安装GCC8.2.0+VIM8.1+Python3.7.0+LLVM7.0+VIM自动填充代码插件YouCompleteMe完整版

2 安装YouCompleteMe前准备工作

YouCompleteMe的github地址:https://github.com/Valloric/YouCompleteMe

YouCompleteMe简称为YCM,YCM安装前要仔细阅读其github下的README.md文件(重点看full installation guide下的安装部分)。当然也可以直接跟着下面流程来走。说明一下,我的centos是刚安装好的原生系统,还没有安装vim、gcc等,yum版本为3.4.3。

我之前都是用yum直接安装vim和gcc,根本达不到版本要求,yum所安装的版本太低,还是应该要手动编译安装才行得通。

2.1 编译安装gcc 8.2.0

首先先通过yum安装gcc低版本(不安装无法编译安装其他软件包),yum安装的gcc版本是4.8.5

yum install gcc gcc+ gcc-c++ -y
gcc -v
           

当前网上最新版本是8.2.0,可以选择安装比这个版本低一些的,但是由于要满足c++11,所以安装版本应大于4.8。

gcc编译安装需要依赖gmp,mpfr,mpc 这三个包,这三个包以及gcc的下载地址都是:ftp://ftp.gnu.org/gnu

在下载地址下可以看到,gcc最新版本是8.2.0,gmp的最新版本是6.1.2,mpfr的最新版本是4.0.1,mpc的最新版本是1.1.0

找到自己想下的版本,可以直接在网页手动下载,也可以输入下面的命令:

wget ftp://ftp.gnu.org/gnu/gcc/gcc-8.2.0/gcc-8.2.0.tar.gz
wget ftp://ftp.gnu.org/gnu/gmp/gmp-6.1.2.tar.bz2
wget ftp://ftp.gnu.org/gnu/mpfr/mpfr-4.0.1.tar.bz2
wget ftp://ftp.gnu.org/gnu/mpc/mpc-1.1.0.tar.gz
           

这三个包是有依赖关系的,要按以下顺序编译:

mv gmp-6.1.2.tar.bz2 /opt
cd /opt
tar -xjvf gmp-6.1.2.tar.bz2
cd /gmp-6.1.2
mkdir /usr/local/gmp-6.1.2
./configure   --prefix=/usr/local/gmp-6.1.2
make
make install

mv mpfr-4.0.1.tar.bz2 /opt
cd /opt
tar -xjvf mpfr-4.0.1.tar.bz2
cd mpfr-4.0.1
mkdir /usr/local/mpfr-4.0.1
./configure   --prefix=/usr/local/mpfr-4.0.1 --with-gmp=/usr/local/gmp-6.1.2 
make 
make install

mv mpc-1.1.0.tar.gz /opt
cd /opt
tar -xzvf mpc-1.1.0.tar.gz
cd mpc-1.1.0
mkdir /usr/local/mpc-1.1.0
./configure   --prefix=/usr/local/mpc-1.1.0 --with-gmp=/usr/local/gmp-6.1.2 --with-mpfr=/usr/local/mpfr-4.0.1
make
make install
           

如果安装gmp时出现了以下错误:checking for suitable m4… configure: error: No usable m4 in $PATH or /usr/5bin (see config.log for reasons)

说明没有安装m4这个库,按照相同方法编译安装一下即可

wget ftp://ftp.gnu.org/gnu/m4/m4-1.4.18.tar.bz2
mv m4-1.4.18.tar.bz2 /opt
cd /opt
tar -xjvf m4-1.4.18.tar.bz2
cd m4-1.4.18
./configure   --prefix=/usr/local/
make
make install
           

所有的编译完后,添加环境变量:

vi ~/.bashrc
           

在最后一行添上:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mpc-1.1.0/lib:/usr/local/gmp-6.1.2/lib:/usr/local/mpfr-4.0.1/lib
           

保存退出,输入“source ~/.bashrc”命令,立即生效。接下来就可以编译gcc了:

mv gcc-8.2.0.tar.gz /opt
cd /opt
tar -xzvf gcc-8.2.0.tar.gz
cd gcc-8.2.0
mkdir gcc_built
mkdir  /usr/local/gcc-8.2.0 
cd gcc_built
../configure   --prefix=/usr/local/gcc-8.2.0 --with-gmp=/usr/local/gmp-6.1.2 --with-mpfr=/usr/local/mpfr-4.0.1 --with-mpc=/usr/local/mpc-1.1.0 --disable-multilib --enable--long-long --enable-threads=posix
make
make install
           

make时如果出现了以下问题,则说明没有安装zlib

CentOS7.5安装GCC8.2.0+VIM8.1+Python3.7.0+LLVM7.0+VIM自动填充代码插件YouCompleteMe完整版

zlib下载地址为:http://www.zlib.net/

mv zlib-1.2.11.tar.gz /opt
cd /opt
tar -xzvf zlib-1.2.11.tar.gz
cd zlib-1.2.11.tar.gz
mkdir /usr/local/zlib-1.2.11
./configure   --prefix=/usr/local/zlib-1.2.11
make
make install
           

并把zlib添加环境变量到.bashrc中最后一行::

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/zlib-1.2.11/lib
export PATH=$PATH:/usr/local/zlib-1.2.11
           

保存退出,输入“source ~/.bashrc”命令,立即生效。然后再重新对gcc-8.2.0进行make&make install,编译大概等一个小时,可以去慢慢喝杯咖啡了~

编译完后,同样添加环境变量到.bashrc中最后一行:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/gcc-8.2.0/lib:/usr/local/gcc-8.2.0/lib64
export PATH=$PATH:/usr/local/gcc-8.2.0/bin
           

保存退出,输入“source ~/.bashrc”命令,立即生效。gcc-8.2.0安装完毕,查看gcc版本:

gcc -v
           
CentOS7.5安装GCC8.2.0+VIM8.1+Python3.7.0+LLVM7.0+VIM自动填充代码插件YouCompleteMe完整版

2.2 编译安装vim8.1和Python3.7

YouCompleteMe目前版本要求vim版本不低于7.4.1578,我之前就趟过很多坑,有的博客说是不低于7.3,有的说不低于7.4,每个YCM版本要求不一样,一定要认真看其github下的README.md要求。如下图所示:

CentOS7.5安装GCC8.2.0+VIM8.1+Python3.7.0+LLVM7.0+VIM自动填充代码插件YouCompleteMe完整版

vim的github地址:https://github.com/vim/vim/releases

下载最新的release版本,我这里是vim-8.1.0436.tar.gz

先把现有的vim都卸载:

yum remove vim* -y
           

然后安装中断字符处理库ncurses等一些必要的组件:

yum install -y ncurses-devel tcl-devel libffi-devel libXt-devel gtk2-devel bzip2-devel sqlite-devel readline-devel tk-devel openssl-devel
yum install -y ruby ruby-devel lua lua-devel
yum install -y ctags git python python-devel python-pip
yum install -y perl perl-devel perl-ExtUtils-ParseXS perl-ExtUtils-CBuilder perl-ExtUtils-Embed
           

如果不需要一些包可以不用安装,比如,如果用不到ruby语言,就可以不用安装ruby和ruby-devel。然后安装python3,发现yum安装不了,如下图:

yum install -y python3 python3-devel
           
CentOS7.5安装GCC8.2.0+VIM8.1+Python3.7.0+LLVM7.0+VIM自动填充代码插件YouCompleteMe完整版

只能手动编译安装了,python3.7的官方地址为:https://www.python.org/ftp/python/3.7.0/

cd /opt
wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz
tar -xvf Python-3.7.0.tgz
cd Python-3.7.0/
mkdir /usr/local/python-3.7.0
./configure --prefix=/usr/local/python-3.7.0 --enble-optimizations
make
make install
           

安装完毕,建立python3的软连接:

ln -s /usr/local/python-3.7.0/python3 /usr/bin/python3
ln -s /usr/local/python-3.7.0/pip3 /usr/bin/pip3
           

查看python3版本:

CentOS7.5安装GCC8.2.0+VIM8.1+Python3.7.0+LLVM7.0+VIM自动填充代码插件YouCompleteMe完整版

好了,现在开始编译安装vim8.1:

mv vim-8.1.0436.tar.gz /opt/
cd /opt
tar -xzvf vim-8.1.0436.tar.gz
cd vim-8.1.0436
mkdir /usr/local/vim-8.1.0436
./configure --prefix=/usr/local/vim-8.1.0436 --with-features=huge --enable-multibyte --enable-rubyinterp=yes --enable-pythoninterp=yes --enable-python3interp=yes --enable-perlinterp=yes --enable-luainterp=yes --enable-gui=gtk2 --enable-cscope
make
make install
           

安装完毕,添加环境变量到~/.bashrc最后一行:

/usr/local/vim-8.1.0436/bin/vim ~/.bashrc
           

添加内容为:

export PATH=$PATH:/usr/local/vim-8.1.0436/bin
alias vim='/usr/local/vim-8.1.0436/bin/vim'
           

保存退出,输入“source ~/.bashrc”命令,立即生效。执行vim -version

CentOS7.5安装GCC8.2.0+VIM8.1+Python3.7.0+LLVM7.0+VIM自动填充代码插件YouCompleteMe完整版

其中最后两行显示: +pyhton/dyn +pyhton3/dyn,其中+代表支持,-代表不支持。说明支持python2和python3脚本,vim8.1安装完毕。

3 正式安装YouCompleteMe

3.1 安装vundle插件

git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
vim ~/.vimrc
           

将以下内容写入.vimrc:

set nocompatible              " be iMproved, required
filetype off                  " required

" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
" alternatively, pass a path where Vundle should install plugins
"call vundle#begin('~/some/path/here')

" let Vundle manage Vundle, required
Plugin 'VundleVim/Vundle.vim'
 " let Vundle manage YCM, required
Plugin 'Valloric/YouCompleteMe'

" The following are examples of different formats supported.
" Keep Plugin commands between vundle#begin/end.
" plugin on GitHub repo
Plugin 'tpope/vim-fugitive'
" plugin from http://vim-scripts.org/vim/scripts.html
" Plugin 'L9'
" Git plugin not hosted on GitHub
Plugin 'git://git.wincent.com/command-t.git'
" git repos on your local machine (i.e. when working on your own plugin)
Plugin 'file:///home/gmarik/path/to/plugin'
" The sparkup vim script is in a subdirectory of this repo called vim.
" Pass the path to set the runtimepath properly.
Plugin 'rstacruz/sparkup', {'rtp': 'vim/'}
" Install L9 and avoid a Naming conflict if you've already installed a
" different version somewhere else.
" Plugin 'ascenator/L9', {'name': 'newL9'}

" All of your Plugins must be added before the following line
call vundle#end()            " required
filetype plugin indent on    " required
" To ignore plugin indent changes, instead use:
"filetype plugin on
"
" Brief help
" :PluginList       - lists configured plugins
" :PluginInstall    - installs plugins; append `!` to update or just :PluginUpdate
" :PluginSearch foo - searches for foo; append `!` to refresh local cache
" :PluginClean      - confirms removal of unused plugins; append `!` to auto-approve removal
"
" see :h vundle for more details or wiki for FAQ
" Put your non-Plugin stuff after this line
           

保存退出,再打开vim,然后输入以下命令:

:PluginInstall
           

接下来就等待安装了

CentOS7.5安装GCC8.2.0+VIM8.1+Python3.7.0+LLVM7.0+VIM自动填充代码插件YouCompleteMe完整版

命令行 输入vim打开,发现如下错误,不要谎,继续往下安装

CentOS7.5安装GCC8.2.0+VIM8.1+Python3.7.0+LLVM7.0+VIM自动填充代码插件YouCompleteMe完整版

3.2 编译安装LLVM+CLang+CMake

根据官方要求,libclang版本要高于3.9

CentOS7.5安装GCC8.2.0+VIM8.1+Python3.7.0+LLVM7.0+VIM自动填充代码插件YouCompleteMe完整版

我们全部下载最新版本编译安装。下载地址为:http://releases.llvm.org/7.0.0/

从clang官网上下载包含llvm、clang和libcxx等8个文件:

cd /usr/local/
wget -c http://releases.llvm.org/7.0.0/llvm-7.0.0.src.tar.xz
wget -c http://releases.llvm.org/7.0.0/cfe-7.0.0.src.tar.xz
wget -c http://releases.llvm.org/7.0.0/clang-tools-extra-7.0.0.src.tar.xz
wget -c http://releases.llvm.org/7.0.0/compiler-rt-7.0.0.src.tar.xz
wget -c http://releases.llvm.org/7.0.0/libcxx-7.0.0.src.tar.xz
wget -c http://releases.llvm.org/7.0.0/libcxxabi-7.0.0.src.tar.xz
wget -c http://releases.llvm.org/7.0.0/libunwind-7.0.0.src.tar.xz
wget -c http://releases.llvm.org/7.0.0/openmp-7.0.0.src.tar.xz
           

先解压 llvm-7.0.0.src.tar.xz

放在 llvm-7.0.0.src/tools 目录下的组件:

解压 cfe-7.0.0.src.tar.xz,重命名为 llvm-7.0.0.src/tools/clang
           

放在 llvm-7.0.0.src/projects 目录下的组件:

解压 openmp-7.0.0.src.tar.xz,重命名为 llvm-7.0.0.src/projects/openmp
解压 libcxx-7.0.0.src.tar.xz,重命名为 llvm-7.0.0.src/projects/libcxx
解压 libcxxabi-7.0.0.src.tar.xz,重命名为 llvm-7.0.0.src/projects/libcxxabi
解压 libunwind-7.0.0.src.tar.xz,重命名为 llvm-7.0.0.src/projects/libunwind
解压 compiler-rt-7.0.0.src.tar.xz,重命名为 llvm-7.0.0.src/projects/compiler-rt
           

clang 的子组件:

解压 clang-tools-extra-7.0.0.src.tar.xz,重命名为 llvm-7.0.0.src/tools/clang/tools/extra
           

都解压缩完毕后,开始安装cmake,目前最新版本为3.13,下载地址为:https://cmake.org/files/v3.13/

cd /usr/local/
weget -c https://cmake.org/files/v3.13/cmake-3.13.0-rc1-Linux-x86_64.tar.gz
tar -xzvf cmake-3.13.0-rc1-Linux-x86_64.tar.gz
           

这个文件解压缩即安装完成,添加环境变量到~/.bashrc最后一行:

vim ~/.bashrc
           

添加内容为:

export PATH=$PATH:/usr/local/cmake-3.13.0-rc1-Linux-x86_64/bin
           

/usr/local/cmake-3.13.0-rc1-Linux-x86_64/为解压缩后的路径

保存退出,输入“source ~/.bashrc”命令,立即生效。运行cmake --version查看:

CentOS7.5安装GCC8.2.0+VIM8.1+Python3.7.0+LLVM7.0+VIM自动填充代码插件YouCompleteMe完整版

cmake安装完成后,就可以开始编译clang了

在llvm-7.0.0.src同一层目录上新建个目录build并进入

cd /usr/local/
mkdir clang
cd llvm-7.0.0.src
mkdir build
cd build
           

然后Configure and build LLVM and Clang:

cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=/usr/local/clang -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCLANG_DEFAULT_STDLIB=libc++ -DCMAKE_BUILD_TYPE=Release /usr/local/llvm-7.0.0.src
           

如果报错:

CentOS7.5安装GCC8.2.0+VIM8.1+Python3.7.0+LLVM7.0+VIM自动填充代码插件YouCompleteMe完整版

找不到swig,说明没安装swig,在linux下安装非常简单。最常见的就是通过源码安装。源码大家可以在http://www.swig.org/download.html上下载。然后就是安装的老三步:configure --prefix=/usr/local/swig;make;make install。参考前面zlib的安装。然后再执行:

cmake -G "Unix Makefiles" -DSWIG_DIR=/usr/local/swig-3.0.12 -DSWIG_EXECUTABLE=/usr/local/swig-3.0.12 -DCMAKE_INSTALL_PREFIX=/usr/local/clang -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCLANG_DEFAULT_STDLIB=libc++ -DCMAKE_BUILD_TYPE=Release /usr/local/llvm-7.0.0.src
make -j 4
make install
           

安装完毕

CentOS7.5安装GCC8.2.0+VIM8.1+Python3.7.0+LLVM7.0+VIM自动填充代码插件YouCompleteMe完整版

然后重新安装YouCompleteMe

cd ~/.vim/bundle/YouCompleteMe/
vim install.sh
           

将python改为python3

CentOS7.5安装GCC8.2.0+VIM8.1+Python3.7.0+LLVM7.0+VIM自动填充代码插件YouCompleteMe完整版

保存退出,执行以下命令:

/install.sh --clang-completer
           

OK,YouCompleteMe可以用了!

3.3 编译构建ycm_core库

下一步,我们需要编译一个ycm_core的库给YCM用,这样它就可以快速语义分析产生补全或者函数变量快速跳转了。创建一个目录放编译过程中产生的文件,通过cmake来生成makefiles文件:

mkdir ~/.ycm_build
cd ~/.ycm_build
cmake -G "Unix Makefiles" -DUSE_SYSTEM_BOOST=ON -DUSE_SYSTEM_LIBCLANG=ON . ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp
           

出现错误。没有安装boost

CentOS7.5安装GCC8.2.0+VIM8.1+Python3.7.0+LLVM7.0+VIM自动填充代码插件YouCompleteMe完整版

到官网下载最新版的boost,https://www.boost.org/users/history/version_1_68_0.html 安装步骤:

mv boost_1_68_0.tar.gz /opt
cd /opt
tar -xzvf boost_1_68_0.tar.gz
cd boost_1_68_0
mkdir /usr/local/boost-1.68.0
./bootstrap.sh --prefix=/usr/local/boost-1.68.0
./b2 install
           

安装完后,添加环境变量到~/.bashrc

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/boost-1.68.0/lib
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/boost-1.68.0/lib
export C_INCLUDE_PATH=$C_INCLUDE_PATH:/usr/local/boost-1.68.0/include
export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/local/boost-1.68.0/include
           

执行“source ~/.bashrc”命令,继续构建ycm_core

cd ~/.ycm_build
cmake -G "Unix Makefiles" -DUSE_SYSTEM_BOOST=ON -DBOOST_ROOT=/usr/local/boost-1.68.0 -DUSE_SYSTEM_LIBCLANG=ON . ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp
cmake --build . --target ycm_core
           

进行相关配置:复制 .ycm_extra_conf.py 文件;添加 vim 配置

cp ~/.vim/bundle/YouCompleteMe/third_party/ycmd/examples/.ycm_extra_conf.py ~/.vim/
           

添加到~/.vimrc:

let g:ycm_server_python_interpreter='/usr/bin/python'
let g:ycm_global_ycm_extra_conf='~/.vim/.ycm_extra_conf.py'
           

大功告成

CentOS7.5安装GCC8.2.0+VIM8.1+Python3.7.0+LLVM7.0+VIM自动填充代码插件YouCompleteMe完整版