2014-04-10 23 views
7

Bu document takip eden vim, YouCompleteMe eklentisi yapıyorum. make çalıştırdığımda, aşağıdaki hatayı alıyorum.YouCompleteMe oluştururken Libpython hatası

Linking CXX shared library /home/sagar/.vim/bundle/YouCompleteMe/python/ycm_core.so 
/usr/bin/ld: /usr/local/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 
/usr/local/lib/libpython2.7.a: could not read symbols: Bad value 
collect2: error: ld returned 1 exit status 

Bu hata nedir?
Python sürümlerini yönetmek için pyenv yükledim. Sorun yaratıyor mu?

+0

deneyin bulundu -FPIC ile derleyin. Python 2.7 kütüphaneleri de mevcut olmalıdır. – bosnjak

+0

@Lawrence, -fPIC ile derlemeyi denedi, çalışmıyor, aynı hata. –

cevap

6

Linker noktasını .so (shared object) dosyasına .a (static lib) dosyasına değil yapın.

Sen cmake çalıştırırken bayrağı belirterek bunu yapabilirsiniz:

cmake -G "Unix Makefiles" -DPYTHON_LIBRARY=/usr/local/lib/libpython2.7.so . ~/.vim/bundle/YouCompleteme/cpp 
düzgün otomatik değildir gibi pyenv kullandığınız halde YouCompleteMe inşa istenmeyen bir piton yapı işaret edebilir

Do Zihin Şu anda tespit edildi. Bu sorunla yaşıyorsanız

, muhtemelen de doğru Python başlık dosyaları belirtmelidir:

cmake -G "Unix Makefiles" -DPYTHON_LIBRARY=/usr/local/lib/libpython2.7.so -DPYTHON_INCLUDE_DIR=/usr/local/include/python . ~/.vim/bundle/YouCompleteme/cpp 

PS = (O yolda, önce kontrol ederim edilir üstbilgilerinizi varsayarak)

bazı yolları kabul cevaptan sistemimde farklıydı yana
6

(hem CKağıt ve piton lib olanları) yukarıdaki sorun için alternatif bir çözüm post ediyorum:

  1. Yap YCM's build script code yazılı olarak, bu alternatif

    sudo ln -s "/usr/lib/x86_64-linux-gnu/libpython2.7.so.1" "/usr/lib/libpython2.7.so" 
    

    veya olmaya

    $ locate libpython 
    /usr/lib/x86_64-linux-gnu/libpython2.7.so.1 
    
  2. Ya CKağıt beklediği yerden ona bir sembolik oluşturmak libpython2.7.so paylaşılan kitaplığı sürümü olduğundan emin, sen .bu kütüphane sağlamak için ek CKağıt seçenekleri ekleyebilir düzgün için

    export EXTRA_CMAKE_ARGS="-DPYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython2.7.so.1" 
    
+1

YCM'yi derlemeye çalışırken aynı hatayı aldım, paylaşılan kütüphaneyi simüle etmek benim için işe yaramadı, ancak CMake seçenekleri dışa aktarıldı, teşekkürler :-) – Eddy

+1

Ubuntu sunucumda Caffe derlenirken bu hatayı aldım. Sembolik bir bağlantı oluşturmak problemimi çözdü. Teşekkürler! – BajajG

İlgili konular