我正在尝试在cygwin上编译PyPy,当python尝试打开文件“externmod”时,编译停止,该文件刚刚用gcc编译。 cygwin上gcc的问题在于它会自动将“.exe”附加到你正在编译的任何内容上,所以即使gcc被称为gcc -shared -Wl,--enable-auto-image-base -pthread -o /tmp/usession-release-1.8/shared_cache/externmod
,输出文件最终都是externmod.exe
。所以python试图打开/tmp/usession-release-1.8/shared_cache/externmod
并找不到它 - 因此编译停止了。任何人都知道如何解决这个问题,没有重新编译gcc?我不想那样做。
答案 0 :(得分:3)
要回答您的问题,解决问题的最简单方法是在pypy / translator / platform中修改 init .py,使其指向实际平台,而不是“无”它现在正好。在linux.py中,您会注意到有一行“so_ext ='so'',这可能解决了扩展问题。
请注意,虽然假装cygwin的小黑客是linux将在这个确切的实例中工作,但稍后会有一些道路颠簸将会让你(不幸的是,没有我记得足够的细节以避免)。
编辑:我的init.py的相关部分目前看起来像
if sys.platform == 'cygwin':
from pypy.translator.platform.linux import Linux, Linux64
import platform
if platform.architecture()[0] == '32bit':
host_factory = Linux
else:
host_factory = Linux64
elif sys.platform.startswith('linux'):
答案 1 :(得分:3)
我必须做出一些改动后才设法编译它。
答案 2 :(得分:1)
Windows需要" .exe"扩展以了解它的可执行文件。您需要修改构建以查找Windows并使用.exe扩展名。