gcc的-march = native选项根据主机的体系结构生成不同的代码。 ccache不会将机器体系结构存储在其哈希中,这意味着如果更改机器的体系结构(例如切换到高性能VPS节点),则缓存的目标文件可能不兼容。
如何在仍然利用缓存的同时确保获取正确的目标文件?
答案 0 :(得分:0)
您可以确保在构建服务器场中使用具有相同体系结构的计算机。除此之外,我看不出你如何解决这个问题。
还要记住,如果您使用-march=native
,那么任何想要运行二进制文件的人都需要具有相同(或可能是更新但向后兼容)的机器架构。这可能是也可能不是问题。
答案 1 :(得分:0)
ccache
不存储体系结构,但它存储了第一次构建对象时使用的编译器标志。因此,您的问题的一个潜在解决方案可能是使用一个瘦包装脚本,在将-march=native
传递给ccache
之前,将$ for line in `cat file1.txt`; do grep $line file2.txt; done
扩展到实际的标志集(例如使用this之类的内容)
(当然,我会将实际的实施作为练习留给读者。)