/usr/bin/ld: cannot find -lpython2.7
Ich versuche zu installieren von MySQLdb mit Python 2.7. Die Fehler, die ich bekommen hab sieht so aus:
gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -Dversion_info=(1,2,3,'final',0) -D__version__=1.2.3 -I/usr/include/mysql -I/opt/python2.7/include/python2.7 -c _mysql.c -o build/temp.linux-x86_64-2.7/_mysql.o -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64
gcc -pthread -shared build/temp.linux-x86_64-2.7/_mysql.o -L/usr/lib64/mysql -L. -lmysqlclient_r -lz -lpthread -lcrypt -lnsl -lm -lpthread -lmygcc -lpython2.7 -o build/lib.linux-x86_64-2.7/_mysql.so
/usr/bin/ld: cannot find -lpython2.7
collect2: ld returned 1 exit status
error: command 'gcc' failed with exit status 1
Klar, kann es nicht finden Python 2.7. Suchen in /usr/bin
ich sehe:
python*
python2@
python2.4*
python2.7@
Was bedeutet die @
symbol bedeuten? Kann mir jemand raten, ein Mittel gegen den Fehler???
Sie müssen wahrscheinlich die
Glaube nicht, dass Sie wollen, dass die Python-binary. Sieht aus wie Sie benötigen Python .o-Dateien, da diese zu verbinden.
Sollte nicht diese Frage auf serverfault?
python-dev
- Paket (nicht in Verbindung mit dem @)Glaube nicht, dass Sie wollen, dass die Python-binary. Sieht aus wie Sie benötigen Python .o-Dateien, da diese zu verbinden.
Sollte nicht diese Frage auf serverfault?
InformationsquelleAutor Mike | 2011-12-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es nicht finden können, die Python-Bibliothek, nicht die ausführbare Datei. Führen Sie
locate libpython2.7.a
um zu sehen, wo Sie Ihre Python-Bibliothek befindet, und fügen Sie Sie zum Bibliothekspfad (z.B. wenn es in/opt/python2.7/lib
, die Sie anrufen möchtenLDFLAGS="-L/opt/python2.7/lib" make
).Den
@
symbol bedeutet, dass die Datei ist ein symbolischer link;*
bedeutet, dass es ausführbare Datei (diese werden erzeugt,ls -F
, die Ihr vielleicht als alias).Hmm... Bist du vielleicht läuft es da einen Befehl? Sie sollten nicht, es ist das setzen einer environment-variable, wie in
LDFLAGS="-L/opt/python2.7/lib/python2.7/config/" ./configure
oderLDFLAGS="-L/opt/python2.7/lib/python2.7/config/" make
(ich weiß nicht, wie MySQLdb wurde genau)Ah, perfekt! Danke, sorry für mein Missverständnis.
InformationsquelleAutor Petr Viktorin
Die oben genannte Lösung nicht ganz tun es für mich, wie ich war über pip zu installieren, mysql-python, war aber definitiv ein " big push in die richtige Richtung. Für der Vorteil wer landet hier von Google in der gleichen situation sind wie ich, meine Lösung war, um symlink-libpython2.7.ein von der python-Installations-Verzeichnis in das lib-Verzeichnis:
pip install mysql-python gearbeitet, ohne Probleme danach.
/opt/python2.7.1/lib/python2.7/config
zu/etc/ld.so.con.d/python2.7.conf
und läuftsudo ldconfig
, aber Linux ist nicht das hinzufügen der.a
- Datei zu Ihrer Bibliothek Liste, d.h. ld.so.cache. Vielleicht ist das by design. Ein Symlink war die Lösung.Nach Stunden des gcc Fehler, die ich schließlich fand diese Lösung. Dies funktionierte perfekt in CentOS 6.5. Ich benutzte ln -s /opt/python2.7/lib/python2.7/config/libpython2.7.ein /usr/local/lib/
obigen Kommentar gerade meinen Tag gerettet
InformationsquelleAutor Aaron