使用cygwin,dlltool构建64位libpython27.a

时间:2011-09-20 22:12:41

标签: python cygwin mingw cross-compiling win64

我正在尝试使用cygwin在64位Win7机器上构建一个python扩展DLL(因为cygwin只运行32位进程,这实际上是交叉编译)。

我自己使用dlltool从python27.dll创建了libpython27.a(例如,here所解释),但是在链接器阶段编译失败   skipping incompatible c:\Python27\libs/libpython27.a when searching for -lpython27
这正是报告的错误here(那个人最终转向MSVC编译器......)。

更多信息:
- Active Python 2.7.2,win64,x64
- 使用/usr/bin/x86_64-w64-mingw32-g++.exe编译器的最新版cygwin

有人知道这是否得到支持?
有没有办法使用我想念的dlltool?

(我确实找到here使用指南 dlltool --as-flags=--64 -m i386:x86-64 -k -l libpython27.a -d python.def
但是这样做我从dlltool得到"invalid bfd target"错误

谢谢!

更新:我相信可以这样做,因为Enthought python包含这样的文件。我想为不包含它的更常见的发行版创建一个。

2 个答案:

答案 0 :(得分:1)

问题是您使用的是32位dlltool。可能在C:\ MinGW \ bin而不是C:\ MinGW64 \ bin。您可以更改路径,或者专门运行64位工具:

C:\MinGW64\bin\dlltool -v --dllname python27.dll --def python27.def --output-lib libpython27.a

答案 1 :(得分:0)

我不确定您是否对此有所帮助,但在您链接到的页面底部有一个指向here的链接 - 其中包含:

  

请勿使用MinGW-w64。正如您将注意到的,MinGW导入库   AMD64版本中省略了Python(例如libpython27.a)   蟒蛇。这是故意的。 请勿尝试使用dlltool创建一个。   目前还没有正式的MinGW-w64版本,它仍处于“测试版”状态   被认为是不稳定的,尽管你可以从例如64位构建   TDM-GCC。 mingw运行时也存在问题   与MSVC运行时冲突;这可能发生在你的地方   不要指望,例如g ++或gfortran的运行时库内部。至   保持安全,暂时避开MinGW-w64。