2011-09-20 4 views
5

cygwinを使って64bit Win7マシンにPython拡張DLLをビルドしようとしています(cygwinは32bitプロセスとしてしか実行されませんが、実際にはクロスコンパイルです)。Cygwin、dlltoolを使って64bit libpython27.aをビルド

here、例えば、説明したように)私はDLLTOOLを使ってpython27.dllから自分libpython27.a作成しますが、ビルドは
skipping incompatible c:\Python27\libs/libpython27.a when searching for -lpython27
これを言ってリンカフェーズ中に失敗し、正確にエラーが(どこhereを報告しています男はMSVCコンパイラに移りました...)。

さらに詳しい情報:
- アクティブのPython 2.7.2、Win64の、x64の
- cygwinの最新バージョン、/usr/bin/x86_64-w64-mingw32-g++.exeコンパイラを使用して

いこれがサポートされていれば、
私がここで欠場しているdlltoolを使用する方法はありますか?

(私はhereガイダンスが
dlltool --as-flags=--64 -m i386:x86-64 -k -l libpython27.a -d python.def
を使用することが分かったが、そうするとき、私はDLLTOOLから"invalid bfd target"エラーを得た)

ありがとう!

更新Enthought pythonにそのようなファイルが含まれていると考えられます。私はそれを含まないより一般的なディストリビューション用のものを作成したいと思います。

+0

フラグを知っていれば、それは今のように_secret_になりませんか? – brc

答えて

0

私はあなたがこれを見つけるどのように役立つわからないんだけど、ページの下部に、あなたはhereへのリンクがありますにリンクされている - それは言う:

のMinGW-W64を使用しないでくださいが。ご存知の通り、 のMinGWインポートライブラリは、 PythonのAMD64バージョンではPython(例:libpython27.a)は省略されています。これは慎重です。 dlltoolを使用して作成しようとしないでください。 公式のMinGW-w64のリリースはまだありません。まだベータ版で、 は不安定であると考えられます。 TDM-GCC。また、MSVCランタイムと競合するメーリングランタイム に問題がありました。これは、g ++やgfortranの実行時ライブラリのように、 が期待しない場所から発生します。 を安全な場所に置くには、MinGW-w64を今は避けてください。

+0

はい、私はそれを見ましたが、このデータの信頼性については不明です。たとえば、Enthoughtのpython libpython27.aは、AMD64バージョンでも省略されていません。 –

1

問題は、32ビットのdlltoolを使用していることです。おそらくC:\ MinGW \ binの代わりにC:\ MinGW \ binにあります。パスを変更したり、64ビットツールを次のように実行することができます。

C:\MinGW64\bin\dlltool -v --dllname python27.dll --def python27.def --output-lib libpython27.a 
関連する問題