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: 要转载请注明出处,本人版权所有。
PS: 有问题请留言,看到后我会第一时间回复。