首頁 收藏 QQ群
 網(wǎng)站導(dǎo)航

ZNDS智能電視網(wǎng) 推薦當(dāng)貝市場

TV應(yīng)用下載 / 資源分享區(qū)

軟件下載 | 游戲 | 討論 | 電視計(jì)算器

綜合交流 / 評(píng)測 / 活動(dòng)區(qū)

交流區(qū) | 測硬件 | 網(wǎng)站活動(dòng) | Z幣中心

新手入門 / 進(jìn)階 / 社區(qū)互助

新手 | 你問我答 | 免費(fèi)刷機(jī)救磚 | ROM固件

查看: 15184|回復(fù): 1
上一主題 下一主題
[教程]

android源碼中ccache使用及原理簡介

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2014-3-7 00:28 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式 | 來自河南
我們可以使用編譯器高速緩存工具complier cache(ccache)來加快編譯速度. 如果你經(jīng)?!眒ake clean” ,
ccache能大大縮短再次編譯的時(shí)間
可以通過設(shè)置以下命令來啟用ccache??梢詫⒃摥h(huán)境變量寫入.bashrc或類似文件,避免每次都設(shè)置。
$ export USE_CCACHE=1
默認(rèn)cache存儲(chǔ)在~/.ccache. 可以使用下列命令來設(shè)置路徑
$ export CCACHE_DIR=<path-to-your-cache-directory>
推薦的cache大小為50-100GB. 可以使用下列命令來設(shè)置cache size
$ prebuilt/linux-x86/ccache/ccache -M 50G  (工程目錄下運(yùn)行)
該設(shè)置會(huì)永久存儲(chǔ)在CCACHE_DIR
可以使用以下命令來查看ccache的運(yùn)行狀況:
$ watch -n1 -d prebuilt/linux-x86/ccache/ccache -s   (工程目錄下運(yùn)行)
目前在我們的項(xiàng)目中已經(jīng)設(shè)置有ccache,但cache size 偏小,可以重新設(shè)置一下cache size即可。
原理簡介:
ccache 工具通過將頭文件高速緩存到源文件之中而改進(jìn)了構(gòu)建性能,因而通過減少每一步編譯時(shí)添加頭文件所需要的時(shí)間而提高了構(gòu)建速度
在標(biāo)準(zhǔn)的編譯過程中,在 UNIX 下使用 C/C++ 開發(fā)應(yīng)用程序通常需要用到一個(gè)編譯器(如 gcc)以及一個(gè)編譯工具,比如 make。make 和所有的 C 編譯器的問題在于 C 預(yù)處理程序(preprocessor)和頭文件的工作方式。觀察一個(gè)典型的 C 源文件,您會(huì)發(fā)現(xiàn)其中有很多由 #include 所引用的各種頭文件。
每一次編譯一個(gè)文件時(shí),C 預(yù)處理程序(cpp)都會(huì)解析并引入每個(gè)頭文件以及這些頭文件引用到的任何文件。通過對(duì)內(nèi)容進(jìn)行解析,ccp 可以將一個(gè)相當(dāng)基本的 1-KB 大小的源文件轉(zhuǎn)化為一個(gè) 8-KB 大小的源文件,在這個(gè)過程中,會(huì)合并入幾十個(gè)甚至幾百個(gè)頭文件。在典型的開發(fā)項(xiàng)目中,有很多與項(xiàng)目相關(guān)的頭文件可能會(huì)在不同的源文件中多次被引入,而且每個(gè)頭文件本身也可能引用很多其他頭文件。
在典型的編譯過程中,make 工具只編譯自上次編譯后發(fā)生修改的文件,這樣就在很大程度上簡化了編譯過程。
make 將必須被編譯的文件限制在經(jīng)過修改的那些源文件范圍之內(nèi),但是即使是使用 make,仍然有相當(dāng)可觀的浪費(fèi)。每一次編譯項(xiàng)目時(shí),源文件在編譯為匯編語言和最終的機(jī)器代碼之前,都要通過 cpp 進(jìn)行解析。對(duì)每一個(gè)文件來說,每一次可能都要重新解析頭文件。從編譯的全過程來看,您最后可能多次解析了相同的頭文件,浪費(fèi)了處理器周期,更重要的是浪費(fèi)了開發(fā)者的時(shí)間,因?yàn)樗麄円却@一過程的完成。在一個(gè)團(tuán)隊(duì)中,這一影響可能會(huì)更為明顯,
因?yàn)槎嗝_發(fā)者可能都會(huì)反復(fù)多次重復(fù)這一過程,在某一天甚至可能會(huì)同時(shí)進(jìn)行。
ccache(“compiler cache”的縮寫)工具會(huì)高速緩存編譯生成的信息,并在編譯的特定部分使用高速緩存的信息,比如頭文件,這樣就節(jié)省了通常使用 cpp 解析這些信息所需要的時(shí)間。如果您編譯清單 2 中的文件,假定 foobar.h 中包含對(duì)其他頭文件的引用,ccache 會(huì)用那個(gè)文件的 cpp-parsed 版本來取代 include 聲明。就那么簡單。不是真正去讀取、理解并解釋其內(nèi)容,ccache 只是將最終的文本拷貝到文件中,使得它可以立即被編譯。
清單 2. 源文件內(nèi)容
#include “foobar.h”
void main


上一篇:Android系統(tǒng)recovery刷機(jī)腳本updater-script語法說明 ...
下一篇:尋找第三方設(shè)計(jì)公司(智能電視)
沙發(fā)
發(fā)表于 2016-3-10 19:45 | 只看該作者 | 來自山東
很給力,ZNDS有你更精彩!

本版積分規(guī)則

Archiver|新帖|標(biāo)簽|軟件|Sitemap|ZNDS智能電視網(wǎng) ( 蘇ICP備2023012627號(hào) )

網(wǎng)絡(luò)信息服務(wù)信用承諾書 | 增值電信業(yè)務(wù)經(jīng)營許可證:蘇B2-20221768 丨 蘇公網(wǎng)安備 32011402011373號(hào)

GMT+8, 2024-10-20 20:52 , Processed in 0.058335 second(s), 14 queries , Redis On.

Powered by Discuz!

監(jiān)督舉報(bào):report#znds.com (請(qǐng)將#替換為@)

© 2007-2024 ZNDS.Com

快速回復(fù) 返回頂部 返回列表