无法在 Windows 10 上使用 python2.7/MINGW 安装 pyslalib 包
问题描述
我正在尝试在 Windows 10 上使用 python 2.7 安装 pyslalib 包,并不断收到以下信息:
I'm trying to install the pyslalib package using python 2.7 on Windows 10 and keep getting the following:
collect2.exe:错误:ld 返回 1 个退出状态"
"collect2.exe: error: ld returned 1 exit status"
当我尝试运行python setup.py install"时的消息.我认为这可能是我的 mingw 配置的问题,但我似乎无法找到问题所在.
message when I try to run "python setup.py install". I think this might be an issue with my mingw configuration, but I can't seem to locate the problem.
对于这个问题的任何帮助将不胜感激.我周末大部分时间都在为此苦苦挣扎.
Any help with this issue would be greatly appreciated. I've eaten up most of the weekend struggling with this.
谢谢,
输出错误是:
C:Python27libs/libpython27.a(dmmes01026.o):(.idata$7+0x0): undefined reference to `_head_C__build27_cpython_PCBuild_libpython27_a'
C:Python27libs/libpython27.a(dmmes00281.o):(.idata$7+0x0): undefined reference to `_head_C__build27_cpython_PCBuild_libpython27_a'
C:Python27libs/libpython27.a(dmmes00105.o):(.idata$7+0x0): undefined reference to `_head_C__build27_cpython_PCBuild_libpython27_a'
C:Python27libs/libpython27.a(dmmes00253.o):(.idata$7+0x0): undefined reference to `_head_C__build27_cpython_PCBuild_libpython27_a'
C:Python27libs/libpython27.a(dmmes00227.o):(.idata$7+0x0): undefined reference to `_head_C__build27_cpython_PCBuild_libpython27_a'
C:Python27libs/libpython27.a(dmmes00712.o):(.idata$7+0x0): more undefined references to `_head_C__build27_cpython_PCBuild_libpython27_a' follow
collect2.exe: error: ld returned 1 exit status
解决方案
这好像是我最近遇到的一个问题.我认为 Python 附带的 libpython27.a
存在问题(我使用的是 2.7.10 版).根据 python27.dll 创建我自己的 libpython27.a
="nofollow">这里解决了这个问题.
This looks like a problem I had recently. I think there is a problem with the libpython27.a
that comes included with Python (I'm on version 2.7.10). Creating my own libpython27.a
from the python27.dll
as per the instructions found here fixed the problem.
要创建 Python 扩展,您需要链接到 Python图书馆.不幸的是,大多数 Python 发行版都提供了Python22.lib
,Microsoft Visual C++ 格式的库.海合会期望一个.a 文件(准确地说是 libpython22.a
.).以下是转换方法python22.lib
到 libpython22.a
:
To create Python extensions, you need to link against the Python library. Unfortunately, most Python distributions are provided with
Python22.lib
, a library in Microsoft Visual C++ format. GCC expects a .a file (libpython22.a
to be precise.). Here's how to convertpython22.lib
tolibpython22.a
:
- 下载 pexport(从这里或https://web.archive.org/web/20000829082204/http://starship.python.net/crew/kernr/mingw32/pexports-0.42h.zip).
- 获取
Python22.dll
(它应该在你硬盘的某个地方). - 运行:
pexports python22.dll >python22.def
这将提取所有符号从python22.dll
并将它们写入python22.def
. - 运行:
dlltool --dllname python22.dll --def python22.def --output-lib libpython22.a
这将创建libpython22.a
(dlltool
是 MinGW 实用程序的一部分). - 将
libpython22.a
复制到c:python22libs
(与python22.lib
).
- Download pexport (from here or https://web.archive.org/web/20000829082204/http://starship.python.net/crew/kernr/mingw32/pexports-0.42h.zip).
- Get
Python22.dll
(it should be somewhere on your harddrive). - Run :
pexports python22.dll > python22.def
This will extract all symbols frompython22.dll
and write them intopython22.def
. - Run :
dlltool --dllname python22.dll --def python22.def --output-lib libpython22.a
This will createlibpython22.a
(dlltool
is part of MinGW utilities). - Copy
libpython22.a
toc:python22libs
(in the same directory aspython22.lib
).
这个技巧应该适用于所有 Python 版本,包括 Python 的未来版本.你也可以使用这个技巧转换其他库.
This trick should work for all Python versions, including future releases of Python. You can also use this trick to convert other libraries.
相关文章