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 gg :YcmCompleter GoToDefinitionElseDeclaration                                                                                                         
nmap :YcmDiags
"default "let g:ycm_key_detailed_diagnostics = 'd'
优先用当前目录下的.ycm_extra_conf.py,那个.vim 下面的只是备胎。


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

你可能感兴趣的:(Editor,Editor,llvm)