美文网首页
编译器的编译一致性问题

编译器的编译一致性问题

作者: Little熊猫 | 来源:发表于2019-12-26 18:54 被阅读0次

一概述

什么是编译器的一致性问题? 比如相同的代码,在不同的时间或者机器编译,编译选项不变,得到的二进制是一致的,这个就是编译器的一致性。

二 一致性影响条件

如果要保持编译器编译的一致性,如下几点需要考虑:
1) 时间戳使用:DATE, TIME, TIMESTAMP 宏,杜绝此类宏的使用编译参数添加-Werror=date-time,使用后编译会报错,如果依赖的第三方库使用的话,可以使用“-Wno-builtin-macro-redefined -D__DATE__= -D__TIME__= -D__TIMESTAMP__= ”使其失效。
2) 绝对路径的使用: FILE 宏,clang中这个宏往往跟编译时clang指定的路径有关,比如clang -c /absolute/path/to/my/file.cc,得到的是绝对路劲,如果要使用相对路径的话,传递给clang的参数要使用绝对路径。

三 常见问题

在elf中有“.note.gnu.build-id”,如果代码有变化的话“.note.gnu.build-id”字段的内容肯定会变化。
下面这两个宏使得依赖文件使用相对路径
"-no-canonical-prefixes",
"-fno-canonical-system-headers",

相关文章

  • Java JMM 缓存一致性 Volatile

    缓存一致性问题及协议 如果A操作改a,B操作也改a,那么需要遵守缓存一致性协议来更新内存。 编译器重排序 编译器会...

  • 编译器的编译一致性问题

    一概述 什么是编译器的一致性问题? 比如相同的代码,在不同的时间或者机器编译,编译选项不变,得到的二进制是一致的,...

  • 从JVM看Java语言特性(一) 重载机制的实现

    大家应该都知道, 在C语言中是没有重载的, 因为在编译过程中编译器只检查函数名, 不管参数是否一致. 因此编译器无...

  • 多线程安全问题:可见性、原子性、有序性

    引言 CPU缓存与内存产生的一致性问题 CPU时间片切换产生的原子性问题 CPU指令编译优化产生的有序性问题 并发...

  • Java学习-程序编译与代码优化

    介绍 java代码编译器代表性的有三类前端编译器:我们熟知的javac就是前端编译器JIT编译器:即时编译器,如h...

  • Objective-C基础学习之@property基本概念

    1.什么是@property @property是编译器的指令 什么是编译器的指令 ?编译器指令就是用来告诉编译器...

  • @property

    1.什么是@property @property是编译器的指令什么是编译器的指令 ? 编译器指令就是用来告诉编译器...

  • OC语言@property@synthesize和id

    1.property @property是编译器的指令什么是编译器的指令,编译器指令就是用来告诉编译器要做什么 @...

  • 【Xcode编译原理】

    GCC编译器 Xcode4之前,Xcode是用GCC编译器来翻译代码的;GCC编译器是开源免费的编译器 GCC :...

  • 10-29(clang)

    编译器可以编译一个程序,但是编译器本身也是一个程序,它是由更早的编译器编译而成 的,那么,最早的编译器是谁呢? A...

网友评论

      本文标题:编译器的编译一致性问题

      本文链接:https://www.haomeiwen.com/subject/oduloctx.html