undefined symbol: PyFPE_jbuf 問題分析並處理

#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:要轉載請註明出處,本人版權所有.

有問題請留言,看到後我會第一時間回覆

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章