gpt4 book ai didi

gcc - 将 gcc 与 ccache 一起使用

转载 作者:行者123 更新时间:2023-12-02 01:22:47 27 4
gpt4 key购买 nike

我正在考虑在团队范围内使用 ccache 和 gcc 编译代码(相同的 ccache 的缓存将被同一台机器上的所有开发人员使用)。

既然我们谈论的是商业产品,编译的“正确性”是重中之重。

问题来了:

  1. 使用 ccache 的编译是否安全/可重现?有没有ccache误认为缓存命中的异常情况。

    如果我 checkout 源代码并编译它,我希望收到相同的产品(完全相同的库/二进制文件)每次我重复一个新的编译过程。这是商业产品的必须

  2. 是否有使用 ccache 作为其不可或缺的一部分的开源/商业产品构建系统?这将更容易说服我的同事使用 ccache。

谢谢

最佳答案

根据它的手册,ccache 判断它之前是否编译过一些对象:

  • 使用 -E 运行编译器的预处理器输出
  • 命令行选项
  • 真实的编译器大小和修改时间
  • 编译器生成的任何标准错误输出

如果某些 PHB 仍然担心您因 ccache 承担的任何假定风险,请仅将其用于开发构建并使用没有任何前端的编译器构建最终产品。或者您可以在构建最终产品之前清除缓存。

更新:我不知道使用 ccache 作为其构建系统的组成部分的产品,但集成到任何您可以的环境中真的很简单设置编译器的路径。 IE。对于 autoconf:

CC="ccache gcc" ./configure

在查看了作者的名字后,我认为这是一个非常安全的假设,即它已在 Samba 团队中广泛使用。

更新以回应 Ringding 关于 stderr 用法的评论:从 ccache 的角度来看,一个有趣的信息是C 编译器的版本和配置字符串。 gcc 将其输出到标准错误文件:

$ gcc -v 2>err
$ cat err
Using built-in specs.
Target: i486-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Debian 4.3.4-2' --with-bugurl=file:///usr/share/doc/gcc-4.3/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --enable-shared --enable-multiarch --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --enable-nls --with-gxx-include-dir=/usr/include/c++/4.3 --program-suffix=-4.3 --enable-clocale=gnu --enable-libstdcxx-debug --enable-objc-gc --enable-mpfr --enable-targets=all --with-tune=generic --enable-checking=release --build=i486-linux-gnu --host=i486-linux-gnu --target=i486-linux-gnu
Thread model: posix
gcc version 4.3.4 (Debian 4.3.4-2)

我敢打赌 ccache 使用这个或类似的输出。但是,嘿,你总是可以查看它的源代码。 :-)

关于gcc - 将 gcc 与 ccache 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1425613/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com