gcc 的 -march=native 选项会根据主机的体系结构生成不同的代码。ccache 不会将机器架构存储在其哈希中,这意味着如果您更改机器的架构,例如切换到高性能 VPS 节点,缓存的目标文件可能不兼容。
如何确保在利用缓存的同时获得正确的目标文件?
ccache
不存储体系结构,但它确实存储了第一次构建对象时使用的编译器标志。因此,您的问题的一个潜在解决方案可能是-march=native
在将它们传递给.ccache
(当然,我会将实际的实现留给读者作为练习。)
您可以确保在构建场中使用具有相同架构的机器。除此之外,我看不出你如何解决这个问题。
还要记住,如果您使用,-march=native
那么任何想要运行您的二进制文件的人都需要具有相同(或者可能是更新但向后兼容)的机器架构。这可能是也可能不是问题。