#PS:要轉載請註明出處,本人版權所有
#PS:這個只是 《 我自己 》理解,如果和你的
#原則相沖突,請諒解,勿噴
前景提要
最近在某平臺擼(學習)npu一個解決方案,既然要學習,就重頭開始唄。首先我們就刷板子,沒啥毛病,刷機正常。然後就開始配置環境,配置環境雖然有點小打小鬧的問題,後面可能會記錄過程吧,還是成功躺過,然後我就運行其自帶的例子。然後得到以下毛病:
探索
因爲我寫過c/c++調用python的程序,所以我看到這個未定義的符號命名規則,我就知道,肯定是我TNND在編譯python3.5的時候,少了點什麼東西。下面查看系統python3的符號和我自己編譯的python3的符號就證明了我的猜測:
既然這樣我就去看看Python3.5的源碼,還是發現了這個符號的蹤跡:
喲西,直接排除fpectlmodule.c文件的,因爲其是一個static,未export的變量。
看看pyfpe.h呢?
soga,那麼幾乎可以確定是這個WANT_SIGFPE_HANDLER沒有啓用。既然這個宏未啓用那麼一定有一個開關可以打開?
我們先來看看這個頭文件的說明,可以得到的是這個模塊是用來處理linux上的SIGFPE信號的。
簡單說明:SIGFPE信號就是floating-point exception(浮點異常),比如除0試試,好玩!
我們繼續看看幫助文檔呢?
./configure --help看看呢?
找到了,發現了這個。應該是要添加這個選項,雖然我不知道爲啥py要把這個選項獨立出來。
解決方案
我看了網上的大部分方案都是說python版本過多的問題導致的。怎麼說呢?原因確實可以這樣說版本錯誤,因爲你自己編譯的版本和系統直接安裝的版本編譯參數是不一樣的,所以有這個錯。
#重新編譯python即可
./configure --prefix=/usr/local/python3 --enable-shared --with-fpectl
make -j16
sudo make install
出來啦,然後解決問題,完結散花。
#PS:請尊重原創,不喜勿噴
#PS:要轉載請註明出處,本人版權所有.
有問題請留言,看到後我會第一時間回覆