- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试为 Linux 和 Windows 制作 Python 应用程序的可执行文件,但 Windows 构建过程失败。
这是我的 Makefile:
all: transpile compile-linux compile-w64
transpile: main.py
cython --embed -3 -o main.c main.py
compile-linux: main.c
gcc -I/usr/include/python3.7 -o main main.c -lpython3.7m -lpthread -lm -lutil -ldl
compile-w32: main.c
i686-w64-mingw32-gcc -o main-x86.exe main.c -lpython3.7m -lpthread -lm -lutil -ldl -I/usr/include/python3.7m
compile-w64: main.c
x86_64-w64-mingw32-gcc -o main-x64.exe main.c -lpython3.7m -lpthread -lm -lutil -ldl -I/usr/include/python3.7m
(all
中没有提到compile-w32
,因为我还没有使用它,稍后我会尝试一下。)
当我尝试编译代码时,这是 makefile/mingw32-gcc 输出。 linux版本编译没有任何问题(我已经运行过一次并且运行良好),但是windows x86_64显示很多错误和警告:
cython --embed -3 -o main.c main.py
gcc -I/usr/include/python3.7 -o main main.c -lpython3.7m -lpthread -lm -lutil -ldl
x86_64-w64-mingw32-gcc -o main-x64.exe main.c -lpython3.7m -lpthread -lm -lutil -ldl -I/usr/include/python3.7m
In file included from /usr/include/python3.7m/Python.h:8,
from main.c:4:
/usr/include/python3.7m/pyconfig.h:104:3: error: #error unknown multiarch location for pyconfig.h
104 | # error unknown multiarch location for pyconfig.h
| ^~~~~
In file included from /usr/include/python3.7m/pyport.h:4,
from /usr/include/python3.7m/Python.h:63,
from main.c:4:
/usr/include/python3.7m/pyconfig.h:104:3: error: #error unknown multiarch location for pyconfig.h
104 | # error unknown multiarch location for pyconfig.h
| ^~~~~
In file included from /usr/include/python3.7m/pymath.h:4,
from /usr/include/python3.7m/Python.h:86,
from main.c:4:
/usr/include/python3.7m/pyconfig.h:104:3: error: #error unknown multiarch location for pyconfig.h
104 | # error unknown multiarch location for pyconfig.h
| ^~~~~
In file included from /usr/include/python3.7m/pytime.h:5,
from /usr/include/python3.7m/Python.h:87,
from main.c:4:
/usr/include/python3.7m/pyconfig.h:104:3: error: #error unknown multiarch location for pyconfig.h
104 | # error unknown multiarch location for pyconfig.h
| ^~~~~
In file included from /usr/include/python3.7m/Python.h:99,
from main.c:4:
/usr/include/python3.7m/unicodeobject.h:68:2: error: #error Must define SIZEOF_WCHAR_T
68 | #error Must define SIZEOF_WCHAR_T
| ^~~~~
In file included from /usr/include/python3.7m/pystate.h:11,
from /usr/include/python3.7m/traceback.h:8,
from /usr/include/python3.7m/Python.h:119,
from main.c:4:
/usr/include/python3.7m/pythread.h:122:5: error: #error "Require native threads. See https://bugs.python.org/issue31370"
122 | # error "Require native threads. See https://bugs.python.org/issue31370"
| ^~~~~
/usr/include/python3.7m/pythread.h:131:5: error: unknown type name ‘NATIVE_TSS_KEY_T’
131 | NATIVE_TSS_KEY_T _key;
| ^~~~~~~~~~~~~~~~
In file included from /usr/include/python3.7m/Python.h:156,
from main.c:4:
/usr/include/python3.7m/fileutils.h:95:27: warning: ‘struct stat’ declared inside parameter list will not be visible outside of this definition or declaration
95 | # define _Py_stat_struct stat
| ^~~~
/usr/include/python3.7m/fileutils.h:100:12: note: in expansion of macro ‘_Py_stat_struct’
100 | struct _Py_stat_struct *status);
| ^~~~~~~~~~~~~~~
/usr/include/python3.7m/fileutils.h:95:27: warning: ‘struct stat’ declared inside parameter list will not be visible outside of this definition or declaration
95 | # define _Py_stat_struct stat
| ^~~~
/usr/include/python3.7m/fileutils.h:104:12: note: in expansion of macro ‘_Py_stat_struct’
104 | struct _Py_stat_struct *status);
| ^~~~~~~~~~~~~~~
/usr/include/python3.7m/fileutils.h:108:12: warning: ‘struct stat’ declared inside parameter list will not be visible outside of this definition or declaration
108 | struct stat *status);
| ^~~~
make: *** [Makefile:13: compile-w64] Error 1
我已经尝试过 this page 的解决方案(使用 CFLAGS
)但它不起作用。
如果需要,其余代码(包括 main.py 文件)为 here.
最佳答案
您不能将 /usr/include
和 /usr/lib(64)
与 MinGW 一起使用。这些位置包含为您的 Linux 系统配置和编译的软件。
相反,当使用 MinGW for Windows 交叉编译应用程序时,您需要使用为 Windows 构建的库进行编译并链接到该库。
某些 Linux 发行版可能包含包 编辑:显然,使用 MinGW 交叉编译 Python 本身是 no longer supported .mingw64-python3-devel
(或类似包)以及必要的 Python 头文件和库文件。如果您的发行版没有提供此类包,您需要自己使用 MinGW 编译 Python。
关于python - mingw32-gcc 编译 Cython 输出 : unknown multiarch location for pyconfig. h (和其他警告),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59010659/
c 不做边界检查。那么cython是如何检查是否编译成c的呢? %%cython --annotate cimport cython @cython.boundscheck(True) cpdef m
可以直接声明用于 Cython 构造函数? 据我了解,这是可能的: # Cython cdef int[3] li = [1, 2, 3] # C++ int[3] li = {1, 2, 3} 但
所以,如果你有一个头文件。 %%file test.h struct mystruct{ int i; int j; }; 然后你将它包装在 Cython 中: cdef extern fr
我正在构建一个独立于平台的 cython 项目,我想根据正在使用的编译器传递编译器参数。我可以猜测基于平台的编译器,或者假设它与用于 Python 的编译器相同,但不能保证匹配。通常我注入(injec
我使用诗歌构建我的 cython 包。我在所有函数和类中都有 NumPy 风格的文档字符串。我现在要做的是添加 Sphinx 自动文档并发布在 Read the Docs。 我已阅读此主题 How d
赛通 libcpp模块包含 priority_queue 的模板,这很好,除了一件事:我不能通过自定义比较器(或者,至少,我不知道如何)。 我需要这个,因为我需要 priority_queue做一个a
以下代码定义了一个简单的 Cython 函数(为方便起见,使用 Ipython 魔法)。 %load_ext cython %%cython def f(float x, float y=2):
我正在尝试使用 cython 进行复数计算。在示例代码中,我想计算复数的复指数函数。问题是我不知道如何将我的整数乘以虚数单位。python的虚数单位1.0j乘以cython执行时报错。 这是我的代码:
在这里停留在一些基本的 Cython 上 - 在 Cython 中定义字符串数组的规范且有效的方法是什么? 具体来说,我想定义一个定长常量数组char . (请注意,此时我不想引入 NumPy。) 在
是否有可能,如果是,如何确定 Cython 中整数数据类型的大小(以位为单位)? 我正在尝试做这样的事情,以获得整数大小: cdef WORD_BITS = 0 IF sizeof(unsigned
我只是想打印 cython 变量的地址,但我无法绕过错误消息: cdef int myvar print &myvar 抛出 Cannot convert 'int *' to Python obje
我有一个 C 头文件,它在宏中定义了一个函数。我需要从 Cython 调用它。有没有办法在 Cython 中使用宏并使其完全扩展?我已经有了 C 类型的参数。 我尝试像使用函数一样使用 cdef,我认
令人惊讶的是,我似乎找不到通过名称获取结构体元素的单个示例(无论是在网络上还是在 cython 示例中)。 所以我收到了一个指向 C 函数结构体的指针,并且想要一一访问这些元素并将它们重新打包到 py
我尝试围绕 C++ 库编写一个 Cython 包装器 http://primesieve.org/ 它包装了一个函数count。到目前为止,它可以正确安装 python setup.py instal
我正在尝试将 cython 模块 data.pyx 导入另一个 cython 模块 user.pyx。一切都编译得很好,但是当我尝试在 python 模块中调用 user.pyx 时,我收到错误“Im
更新:内存 View 获胜。Cython 使用类型化内存 View :0.0253449 特别感谢 lothario,他指出了几个关键的变化。 荒谬。当然现在的问题是,似乎不能对它们做太多算术(加法和
我有一个使用 memoryview 数组的 cython 模块,即... double[:,:] foo 我想使用多处理并行运行这个模块。但是我得到了错误: PicklingError: Can't
我正在尝试使用 Cython 加速 PEP 484 类型的 python 脚本。我想保持一些语义和可读性。 之前,我有一个 Flags = int def difference(f1: Flags,
这个问题已经有答案了: Collapse multiple submodules to one Cython extension (5 个回答) 已关闭 3 年前。 我在一个包中有多个 .py 文件
我已经能够在我的 .pyx 脚本上使用 cython 在 linux 上创建一个 .so 文件。我也可以成功地在我的 python 解释器上进行导入。 我的问题是如何在不使用 cython 的情况下将
我是一名优秀的程序员,十分优秀!