2

gcc 的 -march=native 选项会根据主机的体系结构生成不同的代码。ccache 不会将机器架构存储在其哈希中,这意味着如果您更改机器的架构,例如切换到高性能 VPS 节点,缓存的目标文件可能不兼容。

如何确保在利用缓存的同时获得正确的目标文件?

4

2 回答 2

1

ccache不存储体系结构,但它确实存储了第一次构建对象时使用的编译器标志。因此,您的问题的一个潜在解决方案可能是-march=native在将它们传递给.ccache

(当然,我会将实际的实现留给读者作为练习。)

于 2016-04-09T20:40:08.930 回答
0

您可以确保在构建场中使用具有相同架构的机器。除此之外,我看不出你如何解决这个问题。

还要记住,如果您使用,-march=native那么任何想要运行您的二进制文件的人都需要具有相同(或者可能是更新但向后兼容)的机器架构。这可能是也可能不是问题。

于 2016-04-08T17:16:52.500 回答