标签: ccache

ccache 失败且只读

我正在 ubuntu 机器上构建 android 10。来源是自定义的,而不是谷歌专门提供的。源代码是硬编码的,以便预构建 clang 使用 ccache。我已经安装了 ccache 并将这些变量添加到 bashrc 中:

_CCACHE_EXEC=/usr/bin/ccache

_CCACHE_EXEC-M 50G

导出 USE_CCACHE=1

chmod 和 chown the ~/.ccache 在构建过程中具有相同的结果,实际错误是:

ccache:错误:无法创建目录 /home/brandonabandon/.ccache/tmp:只读文件系统。

我无法联系到来源的所有者。我尝试禁用 ccache,这会由于最近的硬编码 ccache 提交而进一步导致错误。我以前可以建造得很好。我被难住了一个星期了。有任何想法吗?

android ccache

4
推荐指数
1
解决办法
1万
查看次数

如何在Make中使用ccache?

我有一个源目录,它使用makefile来编译代码.此makefile/configure文件不是为ccache兼容性而编写的.所以我想用ccache.我在.bashrc中创建了别名alias gcc='ccache gcc',但是Makefile仍然没有考虑gcc的这个定义.那么有什么我可以做而不触摸Makefile/configure文件,ccache gcc而不是gcc.CC ='ccache gcc'./configure也不是一个选项,因为它不要求CC.

如果我写Makefile然后我可以提供$ {gcc),但这不是一个选项,因为我不是在写Makefile.有什么办法可以让我们不需要在源文件中更改任何内容,但仍然可以启用ccache编译.

c makefile ccache

3
推荐指数
3
解决办法
6959
查看次数

在 GitLab CI for ccache 中没有命中

在 GitLab CI 中,ccache 的缓存命中为零,即使源没有改变并且缓存被持久化。

此外,每次构建运行时缓存的大小都会增加,这意味着它会一遍又一遍地重建。

continuous-integration caching build ccache gitlab

3
推荐指数
1
解决办法
641
查看次数

我可以让 npm / gyp 使用 ccache 吗?

ccache是一种通过缓存结果来加速构建您之前已经构建的 C 二进制文件的绝妙方法。(另一个很棒的工具是distcc,它将代码传递给其他机器进行并行编译!)

我可以npm在使用ccache构建 C 文件时使用gyp吗?

下面是一种测试方法:

$ time npm install mmmagic
...
npm install mmmagic  103.83s user 9.06s system 100% cpu 1:51.84 total

$ rm -rf node_modules/mmmagic

$ time npm install mmmagic
...
npm install mmmagic  103.48s user 8.59s system 102% cpu 1:48.87 total
Run Code Online (Sandbox Code Playgroud)

如果我们可以使用ccache,那么在第二次尝试时它应该会明显更快。

查看是否ccache被调用以及是否有帮助的另一种方法是在构建正在进行时在单独的终端中运行它:

$ watch -d ccache -s
Run Code Online (Sandbox Code Playgroud)

这将显示ccache的统计信息的实时更新。

ccache gyp npm

2
推荐指数
1
解决办法
355
查看次数

编译 AOSP 8.1 时,Ccache 不会增长超过 1GB,最大大小 = 30GB

我正在构建服务器上编译 AOSP 8.1.0 源代码树。我使用 Ubuntu 16.04 所需的所有软件包制作了一个 docker 映像。我在启动 docker 镜像时挂载了源树、ANDROID_OUT 和 ccache 目录。这三个目录在docker中的路径是一样的:

来源:/home/builder/android_source/AOSP_8.1/

输出:/home/builder/android_out/AOSP_8.1/

ccache: /home/builder/ccache/

问题是我不明白 ccache 的行为方式。如果我watch ccache -s在编译 android 时运行,我会看到如下内容:

files in cache: 10365
cache size: 931.9MB
Run Code Online (Sandbox Code Playgroud)

这些值之后的几秒钟可以增加或减少。我已将最大缓存大小设置为 30GB,ccache -s告诉我这是正确的最大大小,但缓存大小从未超过 1Gb。我在 5 次构建之后看到的最大大小约为 983MB。

我尝试了什么?

1) chown -R builder:builder ~/ccache/

2)ccache -M 30G在码头。最大大小设置为 30GB,行为保持不变。

3) ccache -C- 缓存清除,没有什么好转的。

我的 ccache 有什么问题?

android ccache android-source

2
推荐指数
2
解决办法
2821
查看次数

如何使用ccache加速aosp的编译?

我在这里找到了 ccache aosp repo https://android.googlesource.com/toolchain/ccache/,但我不知道如何在 aosp v10 上使用 ccache,aosp 官方网站不再有关于 ccache 的任何信息,只有多个构建。ccache 是否仍然适用于最新版本的 aosp ?

ccache android-source

2
推荐指数
1
解决办法
3582
查看次数

使用gcc和ccache

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

由于我们谈论的是商业产品,因此编制的"正确性"是首要任务.

这里有问题:

  1. 使用ccache的编译是安全 /可重现的吗?是否有一些异常情况,ccache错误地认为缓存命中.

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

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

谢谢

gcc compilation ccache

1
推荐指数
1
解决办法
2187
查看次数

如何在奇点构建中利用主机缓存?

我正在寻找优化奇点 HPC 容器构建时间的方法。我知道通过逐层构建它们可以节省一些时间。但仍然有优化的空间。

我感兴趣的是使用/缓存主机系统上有意义的任何内容。

  1. CCache 用于 C++ 构建工件缓存
  2. git 仓库克隆
  3. APT包下载

我做了一些实验,但在任何一点上都没有成功。

到目前为止我发现了什么:

缓存

我在容器中安装 ccache 并指示构建系统使用它。我知道因为我正在使用singularity buildsudo 运行,所以缓存将位于/root. 但运行构建后,/root/.ccache却是空的。我验证了生成的 CMake 构建文件,它们肯定使用了 ccache。

我什至创建了一个测试配方,其中包含%post

touch "$HOME/.ccache/test"
Run Code Online (Sandbox Code Playgroud)

但测试文件没有出现在主机系统上的任何地方(不在/root我用户的家中)。构建步骤是否挂载容器支持的目录而/root不是主机的根目录?

使用 ccache 还需要做些什么吗?

git

人们建议运行例如 git-cache-http-server (/sf/answers/3055053571/)并使用git config --global url."http://gitcache:1234/".insteadOf https://.

由于奇点可以读取主机文件系统的部分内容,我认为甚至可以有一种方法让它在没有代理程序的情况下工作。但是,如果主机 git 存储库不在$HOMEor内部/tmp,奇点如何在构建期间访问它们?singularity build没有--bind标志来指定其他安装目录。使用%files配方中的部分听起来效率很低 - 每次运行构建时都要复制所有内容。

易于

人们建议使用例如squid-deb-proxy(https://gist.github.com/dergachev/8441335)。同样,由于奇点能够读取主机文件系统文件,我想只利用主机的/var/cache/apt. 但/var默认情况下并没有挂载到容器上。/var/cache/apt那么同样的问题又来了——如何在容器构建期间挂载。总体而言这是一个好主意吗?鉴于主机和容器都基于相同版本的 …

caching ccache singularity-container

0
推荐指数
1
解决办法
1348
查看次数