ubuntu 12.04无root权限安装YouCompleteMe

#文章背景:
平时工作过程, 经常使用vim来编写和阅读代码, 这就需要安装一些vim插件. 部分插件只需要下载后, 拷贝.vim目录下面, 在.vimrc做一配置就可以了. 但有些插件则需要依赖于其它组件, 比如常用的cscope, ctags等. 最近, 看到vim的YouCompleteMe比较不错, 就起了念头在工作站安装YouCompleteMe, 简称ycm. 但属于自己的公司工作站上帐户是没有root权限的, 这就需要管理员帮助安装软件(老麻烦管理员也是令人崩溃的事情), 而有些软件则由于版本号过低会导致一些功不能工作, 最后被迫通过直接编译源码的方式来达到自己的目的. 在安装ycm的过程遇到各种依赖, 花费不少的精力, 特以在此做一记录, 方便查阅.
另外, 这篇文章适合于对linux环境比较熟悉的, 有一定开发经验的同学. 没有基础的话, 还是先学习一下基础知识吧.

#系统环境
首先需要明确一下, 工作站的环境, ubuntu 12.04 LTS. gcc 版本为4.6. 在开始之前请确认已经安装build-essential等必要的安装包, 这些应用或者模块会有依赖, 如果遇到问题可以查看相应的帮助文档, 检查是否安装相应的依赖包.

#安装ycm所需要基本条件:

  1. Vim 7.4.143 with Python 2 or Python 3 support
  2. 如果需要支持c, c++补齐, 需要clang 4.0的支持.

#安装步骤
支持c, c++补齐的, 需要安装clang4.0. 由于没有root权限, 所需要模块都需要自己下载源代码进行编译, 并安装到HOME目录下面. 在这里所需要的软件包都安装到了~/usr目录下面.

##一, 检查所依赖的软件包
下面这些内容可以直接到llvm.org网站查看

http://llvm.org/docs/GettingStarted.html#requirements
http://clang.llvm.org/get_started.html

  1. Requirements:
    GNU Make 3.79, 3.79.1 Makefile/build processor
    GCC >=4.8.0 C/C++ compiler1
    python >=2.7 Automated test suite2
    zlib >=1.2.3.4 Compression library3
    Additionally, your compilation host is expected to have the usual plethora of Unix
    utilities. Specifically:
    ar — archive library builder
    bzip2 — bzip2 command for distribution generation
    bunzip2 — bunzip2 command for distribution checking
    chmod — change permissions on a file
    cat — output concatenation utility
    cp — copy files
    date — print the current date/time
    echo — print to standard output
    egrep — extended regular expression search utility
    find — find files/dirs in a file system
    grep — regular expression search utility
    gzip — gzip command for distribution generation
    gunzip — gunzip command for distribution checking
    install — install directories/files
    mkdir — create a directory
    mv — move (rename) files
    ranlib — symbol table builder for archive libraries
    rm — remove (delete) files and directories
    sed — stream editor for transforming output
    sh — Bourne shell for make build scripts
    tar — tape archive for distribution generation
    test — test things in file system
    unzip — unzip command for distribution checking
    zip — zip command for distribution generation
  2. 检查系统是否满足相应的条件
    2.1 检查cmake的版本号:
    运行命令: cmake --version
    应该能看到如下的输出:
    cmake version 3.8.0
    CMake suite maintained and supported by Kitware (kitware.com/cmake).
    2.2 检查gcc的版本号:
    运行如下的命令: gcc --version
    应该能看到如下的输出:
    gcc (GCC) 6.3.0
    Copyright © 2016 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions. There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    2.3 检查python版本
    由于没有root权限, ycm需要安排future包. 而系统中默认的python是没有安装future的,
    所以只能下载python源码, 手动编译安装到~/usr/python-2.7目录下面.

##二 安装make软件包
检查make的版本号, 如果不满足; 则从http://ftp.gnu.org/gnu/make/下载对应的源码包, 进行下载编译.

##三 安装gcc
由于系统中默认的gcc的版本为4.6, 我下载了gcc 6.3的软件包, 自行编译安装.
gcc编译依赖gmp, mprf, mpc, isl软件包

  1. isl编译安装
    可以去这里下载isl源码包, gcc 4.9需要isl-0.12, gcc 6.3则需要isl-0.16.
    我需要编译的是gcc 6.3, 故下载的是isl-0.16
    http://isl.gforge.inria.fr/
    解压源代码, 进入到源代码目录, 执行如下的命令:
    ./configure --prefix=/home/xxx/usr/isl-0.16
    make install
  1. gmp编译安装:
    访问https://gmplib.org/下载gmp源代码
    解压源代码, 进入到源代码目录, 执行如下的命令:
    ./configure --prefix=/home/xxx/usr/
    make install
  1. mpfr编译安装:
    访问http://www.mpfr.org/下载源代码
    解压源代码, 进入到源代码目录, 执行如下的命令:
    ./configure --prefix=/home/xxx/usr/
    make install
  2. mpc编译安装:
    访问http://www.multiprecision.org/index.php?prog=mpc&page=download下载源代码
    解压源代码, 进入到源代码目录, 执行如下的命令:
    ./configure --prefix=/home/xxx/usr/
    make install
  1. gcc 6.3 编译安装
    访问https://gcc.gnu.org/下载源代码
    解压源代码, 进入到源代码目录, 执行如下的命令:
  1. ./configure --prefix=/home/xxx/usr/gcc-6.3.0 --with-gmp-=/home/xxx/usr --with-mpfr==/home/xxx/usr --with-mpc=/home/xxx/usr
    –with-isl=/home/xxx/usr/isl-0.16 LDFLAGS="-static -L/home/xxx/usr/lib -static -L/home/xxx/usr/isl-0.16/lib"
    –enable-languages=c,c++,fortran,objc,obj-c++ --enable-shared --enable-linker-build-id --with-system-zlib
    –libexecdir=/home/xxx/usr/gcc-6.3.0/lib --without-included-gettext --enable-threads=posix
    –with-gxx-include-dir=/home/xxx/usr/include/c++/6.3.0 --libdir=/home/xxx/usr/gcc-6.3.0/lib --enable-nls --with-sysroot=/
    –enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-objc-gc --disable-werror
    –with-arch-32=i686 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
  1. make install
  2. 进入/home/xxx/usr/gcc-6.3.0/bin目录, 执行如下的命令:
    ln -s gcc cc
    ln -s cl1 /home/xxx/usr/gcc-6.3.0/lib/gcc/x86_64-linux-gnu/6.3.0/cc1

注: xxx 代表是你自己的帐户目录

#四 安装cmake
从https://cmake.org/download/下载cmake源代码包
解压软件包, 进入软件包目录
执行如下的命令:
./bootstrap --prefix=~/usr/
make
make install

安装llvm

访问http://llvm.org/, 下载对应的clang 4.0的代码包
http://releases.llvm.org/download.html#4.0.0

编译命令请参考如下的文档:
http://clang.llvm.org/get_started.html
http://llvm.org/docs/GettingStarted.html#requirements

  1. 下载并解压llvm4.0源码包
  2. 下载并解压clang4.0源码包到llvm/tools
  3. 下载并解压clang tool extra源码包到llvm/tools/clang/tools
  4. mkdir build_llvm4.0
  5. cmake -G “Unix Makefiles” …/llvm
  6. cmake --build .
  7. cmake -DCMAKE_BUILD_TYPE=Release
    -DCMAKE_INSTALL_PREFIX=/home/liuhj7/usr/llvm -P cmake_install.cmake

编译安装python

ycm需要python支持ucs4, 同时需要安装future包, 由于没有root权限, 帮需要下载源码自行编译安装.
从https://www.python.org/downloads/release/python-2713/下载对应的源码包
解压源码后, 进行编译:

  1. ./configure --prefix=/home/xxx/usr/python-2.7.13-ucs4 --enable-shared --enable-ipv6 --enable-unicode=ucs4 --enable-profiling --enable-optimizations --with-lto LDFLAGS="-Wl,–rpath=/home/xxx/usr/python-2.7.13-ucs4/lib-ucs4,–enable-new-dtags"
  2. make
  3. make install
  4. 下载pip.py到/home/xxx/usr/python-2.7.13-ucs4/bin
  5. cd /home/xxx/usr/python-2.7.13/bin
    ./pip.py future

编译vim

访问http://www.vim.org/git.php, 参照说明通过git下载源代码

  1. 切换到代码目前, 运行git tag查看版本, 执行git co tag_you_want, 切换到你需要的版本.
  2. make distclean
  3. ./configure --with-features=huge --enable-cscope --enable-fontset=yes
    – enable-pythoninterp=yes --enable-multibyte --enable-xim
    –enable-gui=auto --enable-luainterp=yes --enable-pythoninterp=yes
    –enable-rubyinterp=yes --enable-perlinterp=yes
    –enable-cscope=yes --with-x --with-compiledby=xxx:yyyy-mm-dd
    –with-python-config-dir=/home/xxx/usr/python-2.7.13-ucs4/lib/python2.7/config/
    –disable-selinux --prefix=/home/xxx/usr/vim80
  4. make
  5. make install

编译ycm

从这里通过git下载代码:
https://github.com/Valloric/YouCompleteMe

  1. mkdir build_ycm
  2. cd build_ycm
    cmake -G “Unix Makefiles” -DPATH_TO_LLVM_ROOT=~/usr/llvm-4.0
    -DPYTHON_EXECUTABLE:FILEPATH=/home/liuhj7/usr/python-2.7.13-ucs4
    . ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp
  3. cmake --build . --target ycm_core
  4. 编译完成之后, 修改.vimrc文件; 配置ycm. 可以参考:
    http://valloric.github.io/YouCompleteMe/

注意

需要把生成的lib库添加到库搜索目录里面, 通过修改.bashrc即可.同时把需要用到的程序添加到path环境变量中, 请参考:
if [ “$PATH” == “” ]; then
export PATH=$MY_PATH
else
if [ expr match "$PATH" "$MY_PATH" -eq 0 ]; then
export PATH=$MY_PATH:$PATH
fi
fi

MY_LD_LIBRARY_PATH=/home/xxx/usr/python-2.7.13-ucs4/lib:/home/xxx/usr/lib:/home/xxx/usr/isl-0.12/lib:/home/xxx/usr/isl-0.16/lib
if [ “$LD_LIBRARY_PATH” == “” ]; then
export LD_LIBRARY_PATH=$MY_LD_LIBRARY_PATH
else
if [ expr match "$LD_LIBRARY_PATH" "$MY_LD_LIBRARY_PATH" -eq 0 ]; then
export LD_LIBRARY_PATH=$MY_LD_LIBRARY_PATH:$LD_LIBRARY_PATH
fi
fi

这个过程是在完成之后整理出来的, 可能会有错误. 有问题可以告诉我. 希望这篇文档对想折腾ycm的人有帮助, 谢谢.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值