使用 cygwin、dlltool 构建 64 位 libpython27.a
我正在尝试使用 cygwin 在 64 位 Win7 机器上构建 python 扩展 DLL(因为 cygwin 仅作为 32 位进程运行,这实际上是交叉编译)。
我使用 dlltool 从 python27.dll 自己创建了 libpython27.a (例如,此处 ),但是构建在链接器阶段失败,并显示搜索 -lpython27 时跳过不兼容的 c:\Python27\libs/libpython27.a
这正是此处报告的错误(该人最终转向 MSVC 编译器...)。
更多信息:
- 活动Python 2.7.2、win64、x64
- 最新版本的 cygwin,使用 /usr/bin/x86_64-w64-mingw32-g++.exe 编译器
有人知道这是否受支持吗?
有没有办法使用我在这里想念的 dlltool?
(我确实找到了 此处使用指南dlltool --as-flags=--64 -m i386:x86-64 -k -l libpython27.a -d python.def
但这样做时,我从 dlltool 收到“无效的 bfd 目标”错误)
谢谢!
更新:我相信这是可以做到的,因为 Enthought python 包含这样的文件。我想为不包含它的更常见的发行版创建一个。
I'm trying to build a python extension DLL on a 64bit Win7 machine using cygwin (as cygwin only run as 32bit process, this is actually cross-compiling).
I created libpython27.a myself from python27.dll using dlltool (as explained, for example, here), but the build fail during the linker phase sayingskipping incompatible c:\Python27\libs/libpython27.a when searching for -lpython27
This is exactly the error reported here (where the guy ended up moving to MSVC compiler...).
More info:
- Active Python 2.7.2, win64, x64
- latest version of cygwin, using the /usr/bin/x86_64-w64-mingw32-g++.exe compiler
Does anyone know if this is supported?
Is there way to use dlltool which I miss here?
(I did found here the guidance to usedlltool --as-flags=--64 -m i386:x86-64 -k -l libpython27.a -d python.def
but when doing so I got "invalid bfd target"
error from dlltool)
Thanks!
Update: I believe it can be done because Enthought python contains such a file. I would like to create one for the more common distributions which don't contain it.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
问题是您使用的是 32 位 dlltool。可能在 C:\MinGW\bin 而不是 C:\MinGW64\bin 中。您可以更改路径,或专门运行 64 位工具,如下所示:
The problem is that you are using the 32 bit dlltool. Probably in C:\MinGW\bin instead of C:\MinGW64\bin. You can change your path, or run the 64 bit tool specifically as such:
我不确定您觉得这有多大帮助,但在您链接到的页面底部有一个指向此处< /a> - 它说:
I'm not sure how helpful you find this, but at the bottom of the page you linked to there's a link to here - Where it says: