簡體   English   中英

分割錯誤-Python-> C

[英]segmentation fault - Python -> C

我的代碼是:

#!/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 import C代碼)。 Cython 不是用於制作獨立的Python程序,而是用於將Python擴展模塊編譯為C。您仍然需要運行Python解釋器才能使用它們。

如果您想將Python代碼編譯為獨立的二進制文件(無論是什么意思-除靜態鏈接的二進制文件外,所有其他二進制文件都對系統庫有依賴性),您可能想看一下這樣的問題: 如何制作Python腳本獨立可執行文件,無需任何依賴即可運行?

您可以使用Nuitka (這是一個Python編譯器),它可以生成我聽說過的好東西的獨立可執行文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM