zoukankan      html  css  js  c++  java
  • [原]gcc编译器强别名导致的问题

    系统:ubuntu14.04

    编译器:gcc4.8.2

    问题描述:工作需要,使用libnids,所以就下了最新版本的1.24,编译安装后,发现tcp报文重组工作无法完成,具体表现为虽然通过nids_register_tcp函数注册了回调函数,但函数一直不能被执行,通过对libnids执行流程的跟踪,发现在计算checksum的时候出了问题,checksum的值一直不为零,导致libnids认为数据报损坏.

    不明所以,但通过思考,觉得问题应该处在编译器上,是不是64位和32为的问题呢?源码中并没有使用long等可能导致问题的数据类型呀.最终确定是由编译器强别名机制导致的问题。

    解决方案:编译时加上-fno-strict-aliasing选项

    可参考的一些连接:

    https://bugs.launchpad.net/ubuntu/+source/gcc-defaults/+bug/1072650

    http://edeca.net/wp/2014/03/libnids-on-64-bit-architecture-machines/

  • 相关阅读:
    C# 5注释
    C# 4关键字
    C# 3练习题
    python之子类调用父类的同名属性和方法
    python之继承
    python之对象删除和输出
    python之r,w,a
    python之类中的方法和属性
    python之面向对象
    python之os对文件的操作
  • 原文地址:https://www.cnblogs.com/caoyingjie/p/4179178.html
Copyright © 2011-2022 走看看