Setup.pyは、Pythonのビルドに使用されたものと同じCFLAGSを使用することを理解しています。セグメンテーション違反の単一のC拡張があります。ビルドする必要がありますなし-O2
は、-O2
がいくつかの値とコードを最適化しているため、コアファイルでは問題を特定できません。
-O2
が使用されないように、setup.pyを変更するだけです。
Distutilsのドキュメント、特にdistutils.ccompiler
とdistutils.unixcompiler
を読み、フラグとライブラリおよびインクルードを追加する方法を確認しましたが、デフォルトのgccフラグを変更する方法は確認していません。
具体的には、これは多くのバックポートを持つPython 2.5.1のレガシー製品用です(Fedora 8、はい、私は知っています...)。いいえ、OSまたはpythonのバージョンを変更することはできません。また、大きな問題がなければ、Pythonを再コンパイルすることはできません。環境が唯一のセグメンテーション違反である1人の顧客のために、C拡張から1つを構築する必要があります。
CFLAGS="-O0"
を実行する前にsetup.py
を追加します。
% CFLAGS="-O0" python ./setup.py
-O0
はコンパイル中にCFLAGS
に追加されるため、以前の-O2
設定を上書きします。
別の方法は、-O0
をextra_compile_args
のsetup.py
に追加することです:
moduleA = Extension('moduleA', .....,
include_dirs = ['/usr/include', '/usr/local/include'],
extra_compile_args = ["-O0"],
)
すべてのデフォルトフラグを削除する場合は、次を使用します。
% OPT="" python ./setup.py