2

python-config --ldflagsOS X 10.6.2 で問題が発生しました。

システム以外の python.org python インストールを使用する:

robin-mbp:~ robince$ which python
/Library/Frameworks/Python.framework/Versions/2.5/bin/python
robin-mbp:~ robince$ python-config --ldflags
-L/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/config -ldl -lpython2.5

しかし、上記の LDFLAGS を使用して Python を組み込んだ ac プログラムをビルドすると、システムの python が組み込まれます。-lpython2.5 は、-L パス内のシステムの前に、最初にシステム python を取得しているようです。

これまでのところ、私がそれを機能させる唯一の方法は

LDFLAGS=-F/ -framework Python

しかし、配布に関しては、python-config を使用できるようにしたいと思っています。

ライブラリ検索パスが期待どおりに機能しなくなった原因は何ですか? man ページによると、-L パスはデフォルト パスの前に検索する必要があります。

「デフォルトの検索パスを忘れて、-Lで指定されたパスのみを検索する」という行に沿って、python-config出力に追加して機能させるオプションはありますか?

または、パス上にある Python から動作中の -framework フラグを抽出する方法はありますか?

4

1 に答える 1

2

私自身の質問に答えて申し訳ありませんが、私も尋ねたpythonmac-sigメーリングリストで驚くほど迅速な返信を受け取りました。これは現在のPythonのバグです:http://bugs.python.org/issue7541

推奨される回避策:

最も簡単な回避策は、ターミナルウィンドウを開き、次のコマンドを実行することです。

cd /Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/config ln -s libpython2.5.a libpython2.5.dylib

これにより、OSXリンカは、libpythonが共有ライブラリであり、このライブラリにリンクしていることを認識します。デフォルトでは、OSXリンカーはリンカーパス全体で.dylibを検索し、次に.aファイルを検索します。

編集:さらなる更新:

OSXのLDFLAGSに追加できるビルドシステムにMac固有のフラグを追加できる場合 -Wl,-search_paths_first、これにより、リンカーは次のディレクトリに移動する前に、リンクパス上のディレクトリで.dylibファイルと.aファイルの両方を検索します。

于 2009-12-18T16:33:55.243 に答える