/ usr/bin/ld:找不到 -lpython2.7

14 投票
2 回答
24909 浏览
提问于 2025-04-17 07:48

我正在尝试在Python 2.7上安装MySQLdb。出现的错误看起来是这样的:

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 个回答

9

上面的解决方案对我来说不太管用,因为我是在用pip来安装mysql-python,但这确实给我指明了方向。为了帮助那些和我有相同情况的人,我的解决办法是把 libpython2.7.a 从Python安装目录创建一个符号链接到lib目录:

ln -s /opt/python2.7.1/lib/python2.7/config/libpython2.7.a

/usr/local/lib/

之后再用 pip install mysql-python 就没有问题了。

18

它找不到Python库,而不是可执行文件。你可以运行 locate libpython2.7.a 来查看你的Python库在哪里,然后把它加到库路径中(比如,如果它在 /opt/python2.7/lib,你就需要运行 LDFLAGS="-L/opt/python2.7/lib" make)。

@ 符号表示这个文件是一个符号链接;* 表示它是可执行文件(这些信息是通过 ls -F 命令显示的,你可能把它设置成了别名)。

撰写回答