libpython2.7.a 缺少许多引用

1 投票
1 回答
1053 浏览
提问于 2025-04-18 03:27

我正在尝试用 -static 编译一个 cython 模块,但遇到了很多关于 libpython2.7.a 的缺失引用错误。例如:

    /usr/lib/x86_64-linux-gnu/libpython2.7.a(complexobject.o): In function `_Py_c_pow':
    (.text.unlikely+0x507): undefined reference to `pow'

我已经安装了 build-essential 这个包,这是我在网上找到的一个解决方案。

我的工作流程是:

cython --embed hi.py
gcc hi.c -lpython2.7 -I /usr/include/python2.7 -static

我缺少什么才能静态链接这个文件呢?

编辑:我添加了额外的链接选项 gcc hi.c -lpython2.7 -lm -pthread -lzlib -I /usr/include/python2.7 -static

所有未定义函数的引用都消失了,但链接器(ld)说找不到 lzlib,所以编译仍然失败。如果不加 -lzlib,我仍然会遇到一些未定义的引用。

1 个回答

0

你的软件包管理器会告诉你,zlib这个库的名字是 libz.so,所以你在编译的时候需要加上 -lz 这个选项。

提问者补充:为了方便其他人参考,所有需要的链接选项是 -lpython2.7 -lm -ldl -lutil -lz -pthread

撰写回答