1

私は、swig と setup.py スクリプトの組み合わせを使用して作成された共有ライブラリ shim を介して、一連のサードパーティ共有 C ライブラリを使用する社内 Python システムの新しいメンテナーです。これは最近までうまく機能していました。

サードパーティの共有 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 に存在することが問題であることを説明し、解決策を提供します: ビルドに -lc を追加して、c ライブラリにリンクします。コマンドライン。

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

setup.py スクリプトのライブラリのリストに「c」を追加しましたが、結果は変わりません。これは、実行可能ファイルではなく共有ライブラリ shim を作成しているためだと思われます。

ビルド環境が与えられた場合、サードパーティの共有ライブラリの 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$ python -V

Python 2.3.4
4

2 に答える 2

1

解決策は、新しい Centos 5.3 VM を作成し、必要に応じてコンポーネントを再構築または再インストールすることでした。

于 2009-07-07T20:00:40.953 に答える