2014-11-24 63 views
1

我有兩個猜測:如果編譯AOSP/CM會發生什麼中斷

它從一開始編譯,但使用CCACHE

再這樣下去,通過檢測模塊走快得多已經編譯

如果我清除了CCACHE而不是OUT目錄,會發生什麼?它會繼續還是重新啓動?

回答

1

這裏有很多層。

  • 在頂層,你有(至少這是我的印象,從簡要看構建系統)一個製作系統(或類似的東西)。通過調用命令來構建特定的「目標」。如果一個目標已經存在並且是最新的(它所基於的源文件並不比創建的目標更新),make將不會調用任何命令
  • 一個make命令可以調用的是編譯命令(可選以'ccache'爲前綴)。如果調用以ccache爲前綴的命令,ccache將檢查其緩存目錄以查看是否有任何可重用的內容。如果可用,ccache將簡單地將文件從其緩存複製到所需的位置。如果什麼都不可用,ccache將調用編譯器命令(並在之後將結果填充到其緩存中)。

如果清除ccache緩存目錄,則表示make'targets'仍然存在並且是最新的。這意味着制定將決定這些目標不需要重新編譯。換句話說:它會繼續,而不是重新啓動。在這一點上,Ccache甚至還沒有出現。

+0

假設有100個目標及其編譯錯誤#20,因爲它被強制關閉。當我再次運行時,它應該跳到20,然後它會意識到它沒有正確編譯(或者它會實現嗎?),然後再編譯它。它會使用CCACHE再次編譯嗎?還是沒有,因爲CCACHE是從一個破碎的版本? – 2014-11-25 19:46:47

+1

如果您中斷編譯,那麼(通常)不應該是#20的輸出文件。結果,make會再次調用該命令。 Ccache將運行並檢查其緩存。如果緩存爲空,編譯器將被調用(並且之後,對象文件將被存儲在ccache緩存中)。 – Mathiasdm 2014-11-26 06:54:43

相關問題