如何在多个体系结构中使用带有gcc -march = native的ccache?

时间:2016-04-08 16:58:40

标签: c++ gcc aws-ec2 ccache

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

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

ccache不存储体系结构,但它存储了第一次构建对象时使用的编译器标志。因此,您的问题的一个潜在解决方案可能是使用一个瘦包装脚本,在将-march=native传递给ccache之前,将$ for line in `cat file1.txt`; do grep $line file2.txt; done 扩展到实际的标志集(例如使用this之类的内容)

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