爱悠闲 > gcc跨版本编译出现“浮点数例外”错误解决办法

gcc跨版本编译出现“浮点数例外”错误解决办法

分类: linux-C  |  标签: gcc  |  作者: taolinke 相关  |  发布日期 : 2014-12-01  |  热度 : 1145°

项目中遇到的问题,我的开发环境的gcc是4.1.2,而目标机器的gcc版本是3.2.2,而且libc的版本不同,我的是2.5,目标是2.3.2。

问题是,在我的机器上编译出来的动态库和可执行程序,到目标机器,会报错,”浮点数例外“,在网上搜索了一会,发现了问题的原因。

原因是glibc不兼容导致的,因为在高版本的的gcc中,在链接是会用新的hash技术来提高动态链接的速度,

代码是,

-Wl,--hash-style=gnu


但是老版本是不支持的,所以需要在编译时增加参数

-Wl,--hash-style=sysv
另外要注意的是,这个参数需要ld的版本是2.17以上的。

查看ld的版本,可以使用命令,ld --version。