3 回答

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超5個(gè)贊
你在鏈接的時(shí)候必須提供正確的鏈接參數(shù) (需要把 libpython 鏈接到你的可執(zhí)行程序才能正確找到python C API)
具體可以用
1 | pythonX.Y-config --cflags |
得到編譯參數(shù)。
用
1 | pythonX.Y-config --ldflags |
得到鏈接參數(shù)
比如在我的系統(tǒng)上python2.7得到的參數(shù)是
12345 | $ python2.7-config --cflags -I /usr/include/python2 .7 -I /usr/include/python2 .7 -fno-strict-aliasing -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong --param=ssp-buffer-size=4 -DNDEBUG -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong --param=ssp-buffer-size=4 $ python2.7-config --ldflags -lpython2.7 -lpthread -ldl -lutil -lm -Xlinker - export -dynami |
那么就在編譯和鏈接的時(shí)候分別加入上面列出的參數(shù),就可以了 (注意,不要加我例子中打印出來的內(nèi)容,要加你自己執(zhí)行pythonX.Y-config 后得到的內(nèi)容)。

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超7個(gè)贊
一種方式是直接運(yùn)行Python py源文件,方法是先在終端中用cd命令切換到py源文件所在的目錄,然后以./文件名的方式運(yùn)行py源文件(文件名前面加的是一個(gè)英文點(diǎn)號(hào)和一個(gè)英文斜杠,表示在當(dāng)前目錄下運(yùn)行文件)。但是前提是這個(gè)py源文件必須被賦予執(zhí)行權(quán)限,Linux系統(tǒng)中只有有執(zhí)行權(quán)限的文件才可以執(zhí)行,即便是一個(gè)二進(jìn)制文件沒有可執(zhí)行權(quán)限也是不能運(yùn)行的,給文件添加可執(zhí)行權(quán)限的命令是:
chmod a+x 文件路徑
還有一種運(yùn)行Python py源文件的方式不需要py源文件有可執(zhí)行權(quán)限,方法是用Python命令加py文件名的形式來運(yùn)行源文件,如果是Python 2.x的Python源文件,就用python命令執(zhí)行:python 文件名;如果是Python 3的Python源文件,就用python3命令執(zhí)行:python3 文件名。
添加回答
舉報(bào)