gpt4 book ai didi

python - 段错误 - Python -> C

转载 作者:太空宇宙 更新时间:2023-11-04 07:06:41 25 4
gpt4 key购买 nike

我的代码是:

#!/usr/bin/python
import os
os.system('ls')

我使用 cython 将其转换为 C 代码:

~ $ cython ostest.py
~ $ ls ostest*
ostest.c ostest.py

然后使用gcc编译C文件:

~ $ gcc -shared -pthread -fPIC -fwrapv -O2 -Wall -fno-strict-aliasing \-I/usr/include/python2.7 -o ostest.so ostest.c
~ $ ls ostest*
ostest.c ostest.py ostest.so

当我尝试执行该文件时,出现错误:

~ $ ./ostest.so
Segmentation fault

我检查了文件权限:

~ $ ls -l ostest.so
-rwxr-xr-x

我上面提到的 python 代码只是一个示例。我尝试对我编写的其他 python 程序做同样的事情。对于所有这些,我都遇到了同样的错误。
如何解决?

最佳答案

尝试执行共享库(这是您通过使用 GCC 的 -shared 标志构建的库)将导致段错误。那是因为您不打算运行共享库。看来您误读了 Cython Compilation 的说明——它清楚地表明您使用的命令是用于编译扩展模块(您可以从 Python 导入 的 C 代码)。 Cython 不是用于制作独立的 Python 程序,它用于将 Python 扩展模块编译为 C。您仍然需要运行 Python 解释器才能使用它们。

如果你想将你的 Python 代码编译成一个独立的二进制文件(无论那是什么意思——除了静态链接的二进制文件之外的所有二进制文件都对系统库有一定的依赖性),你可能想看看这个 SO 问题:How to make a Python script standalone executable to run without ANY dependency?

您可以使用 Nuitka ,这是一个 Python 编译器,可以生成我听说过的独立可执行文件。

关于python - 段错误 - Python -> C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32399922/

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