2015-06-16 7 views
0

Я пытаюсь установить YouCompleteMe на моем университетском сервере, который запускает Debian Linux (в моем домашнем доме). Когда я бегу:Проблемы с установкой YouCompleteMe

./install.sh 

Я получаю следующее сообщение об ошибке после «объекта Строительство CXX» стадии.

[ 98%] Building CXX object ycm/CMakeFiles/ycm_core.dir/ycm_core.cpp.o 
[100%] Building CXX object  ycm/CMakeFiles/ycm_client_support.dir/versioning.cpp.o 
[100%] Building CXX object ycm/CMakeFiles/ycm_client_support.dir/ycm_client_support.cpp.o 
Linking CXX shared library /home/arenduc1/.vim/bundle/YouCompleteMe/third_party/ycmd/ycm_client_support.so 
/usr/bin/ld: /home/arenduc1/lib/../lib/libpython2.7.a(abstract.o): relocation R_X86_64_32S against `_Py_NotImplementedStruct' can not be used when making a shared object; recompile with -fPIC 
/home/arenduc1/lib/../lib/libpython2.7.a: could not read symbols: Bad value 
collect2: error: ld returned 1 exit status 
make[3]: *** [/home/arenduc1/.vim/bundle/YouCompleteMe/third_party/ycmd/ycm_client_support.so] Error 1 
make[2]: *** [ycm/CMakeFiles/ycm_client_support.dir/all] Error 2 
make[2]: *** Waiting for unfinished jobs.... 
Linking CXX shared library /home/arenduc1/.vim/bundle/YouCompleteMe/third_party/ycmd/ycm_core.so 
/usr/bin/ld: /home/arenduc1/lib/../lib/libpython2.7.a(abstract.o): relocation R_X86_64_32S against `_Py_NotImplementedStruct' can not be used when making a shared object; recompile with -fPIC 
/home/arenduc1/lib/../lib/libpython2.7.a: could not read symbols: Bad value 
collect2: error: ld returned 1 exit status 
make[3]: *** [/home/arenduc1/.vim/bundle/YouCompleteMe/third_party/ycmd/ycm_core.so] Error 1 
make[2]: *** [ycm/CMakeFiles/ycm_core.dir/all] Error 2 
make[1]: *** [ycm/CMakeFiles/ycm_support_libs.dir/rule] Error 2 
make: *** [ycm_support_libs] Error 2 
Traceback (most recent call last): 
    File "/home/arenduc1/.vim/bundle/YouCompleteMe/third_party/ycmd/build.py", line 196, in <module> 
    Main() 
    File "/home/arenduc1/.vim/bundle/YouCompleteMe/third_party/ycmd/build.py", line 189, in Main 
    BuildYcmdLibs(GetCmakeArgs(args)) 
    File "/home/arenduc1/.vim/bundle/YouCompleteMe/third_party/ycmd/build.py", line 152, in BuildYcmdLibs 
_err = sys.stderr) 
    File "/home/arenduc1/.vim/bundle/YouCompleteMe/third_party/ycmd/third_party/sh/sh.py", line 1021, in __call__ 
    return RunningCommand(cmd, call_args, stdin, stdout, stderr) 
    File "/home/arenduc1/.vim/bundle/YouCompleteMe/third_party/ycmd/third_party/sh/sh.py", line 486, in __init__ 
    self.wait() 
    File "/home/arenduc1/.vim/bundle/YouCompleteMe/third_party/ycmd/third_party/sh/sh.py", line 500, in wait 
    self.handle_command_exit_code(exit_code) 
    File "/home/arenduc1/.vim/bundle/YouCompleteMe/third_party/ycmd/third_party/sh/sh.py", line 516, in handle_command_exit_code 
    raise exc(self.ran, self.process.stdout, self.process.stderr) 
sh.ErrorReturnCode_2: 

    RAN: '/usr/bin/make -j 2 ycm_support_libs' 

    STDOUT: 
    STDERR: 

Сообщение об ошибке «recomile using -fPIC», что я должен перекомпилировать? Спасибо.

+0

Вы компилировали свою собственную версию python? (Почему он ищет python в '~/lib/libpython2.7.a'?) – FDinoff

+0

Да, у меня есть свой собственный python .. я проверил файл ~/lib/libpython2.7.a и файл существует .. у меня есть переустановить python? –

+0

Может быть? Я действительно не знаю. Я предполагаю, что python настроен странно. Он также должен быть такой же, как и vim. – FDinoff

ответ

0

Я только что решил эту проблему; то же, что и у вас: у меня установлен мой собственный Python. Я ссылался на this solution, но я сделал это немного по-другому.

  1. Сначала проверьте, если у вас есть libpython2.7.so в собственном Lib директории (в вашем случае это ~/Библиотека /). Если есть только libpython2.7.a, вам может потребоваться перекомпилировать python для общей библиотеки. Посмотрите на this для справки. Короче говоря, вы должны перейти в исходный код питона, а также:

    ./configure --enable-shared \ 
          --prefix=$HOME \ 
          LDFLAGS="-Wl,--rpath=$HOME/lib 
    make 
    make install 
    
  2. Вы можете столкнуться с проблемами, если ваша система имеет сам Python. Проблема выглядит следующим образом:

/USR/BIN/LD: /usr/local/lib/libpython2.7.a(abstract.o): переезд R_X86_64_32 против `.rodata.str1.8' не может использоваться при создании общего объекта; перекомпилировать с -fpic /usr/local/lib/libpython2.7.a: не мог читать символы: Bad значение

В этом случае, пожалуйста, обратитесь к this solution и вернуться к шагу 1.

В противном случае, просто вперед.

  1. Теперь я предполагаю, что у вас есть libpython2.7.so в вашем каталоге. Изменение ~/.vim/bundle/YouCompleteMe/third_party/ycmd/build.py немного:

    • Изменить функцию CustomPythonCmakeArgs(), заменив

      python_library = '{0}.a'.format(lib_python) 
      

      с

      python_library = '{0}.so'.format(lib_python) 
      
    • Добавить линию рядом

      python_executable = '{0}/bin/python'.format(python_prefix) 
      

    Ваш интерпретатор python может находиться в другом месте, соответствующим образом меняйте его.

    • Изменить возвращаемое значение

      return [ 
          '-DPYTHON_LIBRARY={0}'.format(python_library), 
          '-DPYTHON_INCLUDE_DIR={0}'.format(python_include), 
      ] 
      

      в

      return [ 
          '-DPYTHON_LIBRARY={0}'.format(python_library), 
          '-DPYTHON_INCLUDE_DIR={0}'.format(python_include), 
          '-DPYTHON_EXECUTABLE={0}'.format(python_executable), 
      ] 
      
    • Также не забудьте закомментировать

      if OnMac(): 
          full_cmake_args.extend(CustomPythonCmakeArgs()) 
      

      как этот

      # if OnMac(): 
      full_cmake_args.extend(CustomPythonCmakeArgs()) 
      

Вы должны быть хорошо после выполнения этих. Вернитесь к ~/.vim/bundle/YouCompleteMe и установите снова

./install.py --clang-completer 
Смежные вопросы