根據主機的體系結構,-march = gcc的本地選項會生成不同的代碼。 ccache不會將機器體系結構存儲在其哈希中,這意味着如果您更改機器的體系結構,例如切換到高性能VPS節點,則緩存的目標文件可能不兼容。如何在多種體系結構中使用ccache與gcc -march = native?
如何確保在獲取正確的對象文件的同時仍然利用緩存?
根據主機的體系結構,-march = gcc的本地選項會生成不同的代碼。 ccache不會將機器體系結構存儲在其哈希中,這意味着如果您更改機器的體系結構,例如切換到高性能VPS節點,則緩存的目標文件可能不兼容。如何在多種體系結構中使用ccache與gcc -march = native?
如何確保在獲取正確的對象文件的同時仍然利用緩存?
ccache
不存儲該體系結構,但它存儲了第一次構建對象時使用的編譯器標誌。因此,對您的問題的潛在解決方案可能是使用薄包裝腳本,將-march=native
擴展爲實際的一組標記(例如,使用諸如this之類的東西),然後再將它們傳遞給ccache
。
(我當然會,離開實際執行作爲練習讀者..)
您可以確保在您的構建場中使用具有相同體系結構的機器。除此之外,我看不出如何解決這個問題。
另外請記住,如果您使用-march=native
,那麼任何想運行二進制文件的人都需要具有相同(或可能更新但向後兼容)的機器體系結構。這可能是也可能不是問題。