/ usr / bin / ld: не удается найти -lpython2.7 - PullRequest
14 голосов
/ 06 декабря 2011

Я пытаюсь установить MySQLdb с Python 2.7. Ошибка, которую я получаю, выглядит так:

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

Очевидно, что он не может найти Python 2.7. Глядя в /usr/bin Вижу:

python*
python2@
python2.4*
python2.7@

Что означает символ @? Кто-нибудь может посоветовать исправить ошибку?

Ответы [ 2 ]

18 голосов
/ 06 декабря 2011

Не удается найти библиотеку Python, а не исполняемый файл. Запустите locate libpython2.7.a, чтобы увидеть, где находится ваша библиотека Python, и добавьте ее в путь к библиотеке (например, если она в /opt/python2.7/lib, вы хотите вызвать LDFLAGS="-L/opt/python2.7/lib" make).

Символ @ означает, что файл является символической ссылкой; * означает, что это исполняемый файл (он создается ls -F, который вы можете использовать как псевдоним).

9 голосов
/ 06 августа 2012

Приведенное выше решение не совсем помогло мне, так как я использовал pip для установки mysql-python, но это определенно был большой шаг в правильном направлении. В интересах любого, кто попадает сюда из Google в той же ситуации, что и я, я решил использовать символическую ссылку libpython2.7.a из каталога установки python в каталог lib:

ln -s /opt/python2.7.1/lib/python2.7/config/libpython2.7.a / USR / местные / Библиотека /

pip install mysql-python впоследствии работал без проблем.

...