1

我是内部 Python 系统的新维护者,该系统通过使用 swig 和 setup.py 脚本的组合创建的共享库 shim 使用一组 3rd 方共享 C 库。直到最近,这一直运作良好。

第 3 方共享 C 库已针对新功能进行了更新,现在当我尝试运行我们的主要 Python 程序(导入生成的共享库 shim)时,在干净构建后出现以下运行时错误:

-sh-3.00$ python ams.py

ImportError: /usr/lib/libz4lnx.so: undefined symbol: stat

我发现了一个 1999 年的讨论线程,它解释了问题在于 stat 不存在于 libc.so.6 中,而是存在于 libc_nonshared.a 中,并提供了一个解决方案:链接 c 库,通过将 -lc 添加到您的构建命令行。

http://www.redhat.com/archives/pam-list/1999-February/msg00082.html

我在 setup.py 脚本中的库列表中添加了“c”,但这不会改变我的结果。我怀疑这是因为我正在创建一个共享库 shim 而不是可执行文件。

给定我的构建环境,如何满足第 3 方共享库对 stat 的引用?

我的构建系统是:

-sh-3.00$ lsb_release -a

LSB Version:    :core-3.0-ia32:core-3.0-noarch:graphics-3.0-ia32:graphics-3.0-noarch
Distributor ID: CentOS
Description:    CentOS release 4.6 (Final)
Release:        4.6
Codename:       Final

我的 gcc 版本是:

-sh-3.00$ gcc --version

gcc (GCC) 3.4.6 20060404 (Red Hat 3.4.6-10)

我的 Python 版本是:

-sh-3.00$ 蟒蛇 -V

Python 2.3.4
4

2 回答 2

1

解决方案是创建一个新的 Centos 5.3 VM 并根据需要重新构建和/或重新安装组件。

于 2009-07-07T20:00:40.953 回答
1

事实证明,虽然从长远来看,迁移到 Centos 5.3 可能是一件好事,但实际问题是我最初使用的 DVD 上构建 libz4lnx 的方式。在迁移到 Centos 5.3 的过程中,我还迁移到了更新版本的 libz4lnx 库。今天,在测试其他东西时,我使用了原始 DVD 中的库,并在运行 Python 程序时遇到了完全相同的未定义符号错误。切换回最新的 DVD(大约两个月后)再次解决了这个问题。

于 2009-07-13T22:47:46.380 回答