Linux下的floating point exception错误解析
很多人也许都碰到过这样的错误:
linux
下程序运行报错:Floating point exception
。
其实这个问题很容易排查,绝大多数情况情况都是逻辑的除零问题,如:
c = a/b;
或 c = a%b;
如果这里面的b
不小心是0
,则一定会出现Floating point exception的问题,大家可以检查检查啦!
当然如果跑起来都没有到这些代码的部分就报错,很有可能是版本的原因:
同一个程序在一台高版本Linux
上运行时没有问题,而在另一台低版本机器上运行报Floating Point Exception
时,那么这极有可能是由高版本gcc链接造成的。
高版本的gcc在链接时采用了新的哈希技术来提高动态链接的速度,这在低版本中是不支持的。
因此会发生这个错误。gcc就是一个编译器。编译出来的软件在低版本操作系统上有些技术不支持造成这个原因。
解决方案:
在链接的时候添加选项-Wl,–hash-style=sysv
例如 gcc -Wl,–hash-type=sysv -o test test.c