私は、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