2016-04-08 42 views
1

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

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

回答

0

ccache不存储该体系结构,但它存储了第一次构建对象时使用的编译器标志。因此,对您的问题的潜在解决方案可能是使用薄包装脚本,将-march=native扩展为实际的一组标记(例如,使用诸如this之类的东西),然后再将它们传递给ccache

(我当然会,离开实际执行作为练习读者..)

0

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

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