分段错误-Python->;C

分段错误-Python->;C,python,c,gcc,segmentation-fault,cython,Python,C,Gcc,Segmentation Fault,Cython,我的代码是: #!/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 o

我的代码是:

#!/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
标志构建的库)将导致分段错误。那是因为你不打算运行共享库。您似乎误读了的说明,其中明确指出您使用的命令用于编译扩展模块(可以从Python导入C代码)。Cython不是用来制作独立的Python程序的,它是用来将Python扩展模块编译成C语言的。你仍然需要运行Python解释器来使用它们

如果您想将Python代码编译成独立的二进制文件(不管这意味着什么——除了静态链接的二进制文件外,所有二进制文件都依赖于系统库),您可能需要看看这个问题:


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

尝试执行共享库(这是您使用GCC的
-shared
标志构建的库)将导致分段错误。那是因为你不打算运行共享库。您似乎误读了的说明,其中明确指出您使用的命令用于编译扩展模块(可以从Python导入C代码)。Cython不是用来制作独立的Python程序的,它是用来将Python扩展模块编译成C语言的。你仍然需要运行Python解释器来使用它们

如果您想将Python代码编译成独立的二进制文件(不管这意味着什么——除了静态链接的二进制文件外,所有二进制文件都依赖于系统库),您可能需要看看这个问题:


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

尝试执行共享库(这是您使用GCC的
-shared
标志构建的库)将导致分段错误。那是因为你不打算运行共享库。您似乎误读了的说明,其中明确指出您使用的命令用于编译扩展模块(可以从Python导入C代码)。Cython不是用来制作独立的Python程序的,它是用来将Python扩展模块编译成C语言的。你仍然需要运行Python解释器来使用它们

如果您想将Python代码编译成独立的二进制文件(不管这意味着什么——除了静态链接的二进制文件外,所有二进制文件都依赖于系统库),您可能需要看看这个问题:


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

尝试执行共享库(这是您使用GCC的
-shared
标志构建的库)将导致分段错误。那是因为你不打算运行共享库。您似乎误读了的说明,其中明确指出您使用的命令用于编译扩展模块(可以从Python导入C代码)。Cython不是用来制作独立的Python程序的,它是用来将Python扩展模块编译成C语言的。你仍然需要运行Python解释器来使用它们

如果您想将Python代码编译成独立的二进制文件(不管这意味着什么——除了静态链接的二进制文件外,所有二进制文件都依赖于系统库),您可能需要看看这个问题:


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

为什么要构建一个共享库?您能详细介绍一下您要遵循的教程吗?这看起来很奇怪。为什么要构建一个共享库,然后尝试通过shell执行它?这没有多大意义,我正试图用python代码为linux创建一个独立的可执行文件。我对Linux和Python非常陌生。你不需要编译Python。你为什么要构建一个共享库?你能详细说明一下你在遵循哪个教程吗?这看起来很奇怪。为什么要构建一个共享库,然后尝试通过shell执行它?这没有多大意义,我正试图用python代码为linux创建一个独立的可执行文件。我对Linux和Python非常陌生。你不需要编译Python。你为什么要构建一个共享库?你能详细说明一下你在遵循哪个教程吗?这看起来很奇怪。为什么要构建一个共享库,然后尝试通过shell执行它?这没有多大意义,我正试图用python代码为linux创建一个独立的可执行文件。我对Linux和Python非常陌生。你不需要编译Python。你为什么要构建一个共享库?你能详细说明一下你在遵循哪个教程吗?这看起来很奇怪。为什么要构建一个共享库,然后尝试通过shell执行它?这没有多大意义,我正试图用python代码为linux创建一个独立的可执行文件。我对Linux和Python非常陌生,不需要编译Python。