背景
有时在CentOS上编译进程,拿到其他centos上去跑,系统给出了下面一行错误信息:
Floating Point Exception
分析
1、高版本GCC编译的程序在低版本GCC的环境下运行会出现这个错误;
由于使用高版本的gcc glibc 编译后在低版本的glibc上运行导致.
gcc现在在link的时候会采用--hash-style=gnu这个hash方式,据说可以提升动态链接50%的效率。然而, 旧的glibc版本并不支持, 所以想要在旧的glibc版本上跑的话, link的时记得加上-Wl, --hash-style=sysv
例如:
gcc -Wl,--hash-type=sysv -o test test.c
2、程序中出现除0的情况,这种情况可用GDB调试找到问题代码,这里就不赘述了;
检查一下代码中是否有除零:var/0 var%0 这种情况