glibc版本冲突导致的Floating point exception

readhat5下编译的程序在readhat4下运行提示Floating point exception.

确认为gcc版本冲突导致。

解决办法如下:

加入链接选项:

-Wl,--hash-style=sysv

[enjolras@localhost qt3test]$ gcc --help
用法:gcc [选项] 文件...
选项:

......
  -Wl,<选项>               将逗号分隔的 <选项> 传递给链接器
......

键入gcc --help可以发现-Wl是传递给链接器的,故修改makefile的时候要在链接器处加入此选项


以下为修改后的qt自动生成的hello world makefile(仅仅保留了相关的部分,自动生成的makefile比较长):

......
LINK     = g++ -Wl,--hash-style=sysv

all: Makefile $(TARGET)

#这里是链接器链接的语句,只要链接选项中加入了即可,如:上文中在LINK符号中加入(红色部分)
$(TARGET):  $(UICDECLS) $(OBJECTS) $(OBJMOC)  

$(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJMOC) $(OBJCOMP) $(LIBS)

make之后在RedHat4的虚拟机中测试,不再报Floating point exception

你可能感兴趣的:(Linux,C/C++)