gpt4 book ai didi

windows-7 - cython:mingw 的 memoryview 构建错误

转载 作者:行者123 更新时间:2023-12-04 05:30:00 24 4
gpt4 key购买 nike

我一直在用 cython 编写一些 python 扩展模块。我编写的扩展构建并运行良好。然后,我想在访问我的 numpy 数组时使用类型化的内存 View ,因为它们似乎有几个优点 http://docs.cython.org/src/userguide/memoryviews.html

但是,一旦我在我的 cython 代码中使用 memoryview,我就会在构建扩展时遇到错误。例如,如果我添加此测试行:

cdef double[:,::1] X = np.zeros((100, 100))

到现有的工作 cython 扩展。我会收到以下错误:

C:\MinGW\bin\gcc.exe -shared -s build\temp.win32-2.7\Release\image_box.o build\temp.win32-2.7\Release\image_box.def -Lc:\python27\libs -Lc:\python27\PCbuild -lp
ython27 -lmsvcr90 -o x:\ARframework\python\image_ops\image_box.pyd
build\temp.win32-2.7\Release\image_box.o:image_box.c:(.text+0xe23): undefined reference to `___sync_fetch_and_add_4'
build\temp.win32-2.7\Release\image_box.o:image_box.c:(.text+0x3318): undefined reference to `___sync_fetch_and_add_4'
build\temp.win32-2.7\Release\image_box.o:image_box.c:(.text+0x4c81): undefined reference to `___sync_fetch_and_sub_4'
build\temp.win32-2.7\Release\image_box.o:image_box.c:(.text+0x4d37): undefined reference to `___sync_fetch_and_sub_4'
build\temp.win32-2.7\Release\image_box.o:image_box.c:(.text+0x10767): undefined reference to `___sync_fetch_and_sub_4'
build\temp.win32-2.7\Release\image_box.o:image_box.c:(.text+0x10793): undefined reference to `___sync_fetch_and_sub_4'
collect2.exe: error: ld returned 1 exit status
error: command 'gcc' failed with exit status 1

我尝试将 -march=i486 添加到 gcc 行,如这篇文章中所建议的那样:
undefined reference to sync_fetch_and_add_4
但这并没有解决问题。就此而言,我还尝试了 -march=i586 和 -march=pentium ,但均未成功。

知道这里发生了什么吗?

我的平台是Windows 7,mingw版本是4.70,Cython版本是0.17.1

谢谢

最佳答案

我找到了解决方案。

实际上,gcc 标志 -march=i486 确实解决了问题!但是,当我在控制台中对其进行测试时,我只是将它应用到 gcc 行以进行链接步骤(这就是我得到错误的地方)并且由于它没有解决问题,我认为它只是不起作用。
事实上,我需要在编译和链接步骤中都使用 -march=i486 ,然后就没有错误了。

至于在构建扩展时如何包含这些标志,我尝试添加

import os
os.environ['LDFLAGS'] = '-march=i486'
os.environ['CFLAGS'] = '-march=i486'

到 setup.py 但它似乎没有用。

所以我修改了 c:\python27\Lib\distutils\cygwinccompiler.py 以在编译和链接步骤中包含这些标志。不确定这是否是设置这些标志的非常优雅的方式。欢迎任何替代品!

关于windows-7 - cython:mingw 的 memoryview 构建错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12769236/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com