YouCompleteMe插件在linux x64 redhat 下的编译和初步使用

YCM的编译
====
第零步,
$ git submodule update --init --recursive
现在回想起来不是必须,跟下面的编译无关,可以略过。

按文档步骤,第一步:
$ cp -rf YouCompleteMe ~/.vim/bundle/


第二步:
由于服务器的python不支持动态库,我自己编了个。并且和gcc,llvm都安装在~/tools下面。
DPATH_TO_LLVM_ROOT 下面应当有llvm的bin include lib 等。

$ cd ~/.vim/bundle && mkdir ycm_build && cd ycm_build
$ CFLAGS='-fPIC' CPPFLAGS='-fPIC' CXXFLAGS='-fPIC' LDFLAGS='-Wl,-rpath=$HOME/tools/lib64'\
 cmake -G "Unix Makefiles"  \
 -DPATH_TO_LLVM_ROOT=~/tools . ../YouCompleteMe/cpp


检查生成CMakeCache.txt 中的python等路径,如果是/usr/local 需要换成你当前的。
因为即使传递了-DPYTHON_LIBRARY=xxx, 最后也会用local下面的,导致编不过:
/usr/local/lib/libpython2.7.a(abstract.o): relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object;

需要检查
PYTHON_INCLUDE_DIR
PYTHON_LIBRARY
DCMAKE_EXE_LINKER_FLAGS
CMAKE_LINKER


第三步,一切就绪,编译:
$ make -j8

如果顺利的话,所有生成的*.so都已经在YouCompleteMe目录下。

第四步:
vim ~/.bashrc
export LD_LIBRARY_PATH=$HOME/tools/lib64:$HOME/tools/lib
这个会影响ldd, 很重要,我在上面死磕了好久才知道的。

配置.vimrc

let g:syntastic_error_symbol = 'X'                                                                                                                                          
let g:syntastic_warning_symbol = '!'
let g:ycm_global_ycm_extra_conf = '~/.vim/bundle/YouCompleteMe/.ycm_extra_conf.py'
let g:ycm_collect_identifiers_from_tags_files = 1
let g:ycm_seed_identifiers_with_syntax = 1
let g:ycm_confirm_extra_conf = 0
nnoremap <leader>gg :YcmCompleter GoToDefinitionElseDeclaration<CR>                                                                                                         
nmap <F5> :YcmDiags<CR>
"default "let g:ycm_key_detailed_diagnostics = '<leader>d'
优先用当前目录下的.ycm_extra_conf.py,那个.vim 下面的只是备胎。


后记
====
 neocomplete clang_complete 引导了YCM出世,他们可以光荣退休了,因为对YCM底部status 提示有干扰。
YCM除开.git目录干重85MB,虽然是大了些,但是精确调整到声明,像eclipse那样实时错误错误检测,快速补全,足够对得起它的体积。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值