導航:首頁 > 源碼編譯 > 安卓手機編譯內核生成文件

安卓手機編譯內核生成文件

發布時間:2022-07-14 01:00:56

1. android kernel 怎麼編譯

1.准備工作: (ubuntu1110 32位)
ubuntu等linuxOS,下載好eclipse,安裝好JDK, 安裝好android的SDK, 在eclipse中成功打開android 手機模擬器即OK。

2.初始化編譯環境 :
關注該網頁上的「installing required packages」,其中有的軟體包因為版本問題而安裝不上,不用管它,之後遇到錯誤再單獨解決。

3.下載內核源碼
android 2.3 內核 下載需要等待一段時間。

4.下載交叉編譯器:
該步驟有可能耗費大量時間,依據網速不同,幾個小時到幾天不等,或許可以嘗試git clone 後面的地址只下載prebuilt/linux-x86/toolchain

5.設置參數以及編譯:
$ export ARCH=arm
$ export SUBARCH=arm
$ export CROSS_COMPILE=arm-eabi-
$ cd goldfish // 進入下載的源代碼目錄
$ git checkout <commit_from_first_step> //這個步驟沒有做,不知道幹嘛用的
$ make goldfish_defconfig
$ make

6.報錯信息:
若有報錯說找不到 (arm-eabi-gcc command not found)等等,嘗試使用http://blog.csdn.net/davidbeckham2901/article/details/7397447 中說到的解決方案即可(即採用另外一個交叉編譯器)。

7.測試:

最後,測試一下剛才編譯的內核:emulator -avd myavd -kernel ~/goldfish/arch/arm/boot/zImageemulator若系統找不到,可以去android SDK中某文件夾找到,加入系統PATH即可。 -avd後面的參數 myavd即為模擬器的名字,這個咱是在eclipse中的模擬器管理中新建的一個模擬器,用那個模擬器的名字即可。 -kernel後面的參數就找到剛才編譯出的內核的路徑。
若啟動模擬器失敗,可嘗試關閉後再啟動。第一次啟動模擬器時可能需要等待比較長的時間,3分鍾到15分鍾不等。

2. 安卓編譯內核生成的是o文件嗎,然後再打包進boot.img

.o是中間文件,.ko是內核模塊
kernel是一個可執行的bzImage,簡單來講就是由.o鏈接生成的目標文件,不是像你說的那樣n多.o
.ko可以編譯進內核,也可以不編譯進內核,作為插件的形式存在
安裝內核的意思就是把內核到啟動分區,然後安裝內核模塊,以及一些其他的東西。。
每次開機直接把內核裝載到內存裡面去不就行了嗎,這也得先安裝才行不是。

3. 如何自己編譯android系統並製作刷機包

android系統製作刷機包方法:

【一】:下載安裝最新版ROM助手(市場中有很多類似的製作工具,關鍵要求操作簡單,功能強大),安裝程序非常簡單,只需在一隻蘑菇首頁內直接下載,並解壓到自己的電腦安裝即可。

【二】:如果已經下載了與機型匹配的ROM刷機包,那麼現在可以直接打開ROM助手了,接下來繪制專屬個性的完美刷機包就從這里開始吧。

【三】:打開軟體後,它會自動升級到最新版本,另外打開主界面後,會直觀簡明的顯示出它的所有功能,例如:性能優化,系統精簡,預裝APK,簽名打包等等。提醒大家,不要貪心哦,要根據自己的需求點擊需要操作的功能,如系統精簡,然後進入操作界面,所有功能全部修改一遍也無妨,反正都是一鍵操作,省時省力。

4. 如何修改製作卡刷包 安卓卡刷包製作教程

在此先要明確聲明一下:
依照此做法出現您的手機出現任何問題,概不負責的喔!!
英文好的朋友,可以直接看英文官方的參考網站即可:
只用android源代碼做一些簡單實驗的朋友可以參考下面這幾個網站:
說起android刷機包,聽起來非常神秘,實際上它僅僅是一個經過數字簽名的zip壓縮包而已。如果要自己製作刷機包,則必須了解刷機包的基本工作原理,偶首先從android系統的啟動說起:
android系統啟動的時候,首先會進行一些諸如硬體自檢之類的操作,這些操作完成以後(至少它應該知道當前的機器有沒有電),會檢查一下當前手機按鍵的狀態(接下來就是所謂刷機模式切換了,不同的android手機有不同的按鍵組合用來進入刷機模式),如果此時按鍵狀態處於刷機組合,那麼系統會調用ROM裡面的一個叫做recovery的程序(這時就是進入了所謂的刷機程序了,它只是一個工具性質程序,用於檢查刷機包的完整性和數字簽名的合法性。對於目前大多數root過的機器而言,數字簽名的合法性都不會成問題,然後由recovery程序將刷機包進行解壓,然後把刷機包裡面的文件寫入到ROM中去,以此完成刷機過程);如果此時按鍵沒有標明是刷機模式,那麼系統會創建內存檔,開始從ROM裡面載入相應的文件系統,並把相關的文件拷貝到內存檔中,進而引導linux啟動,然後是啟動虛擬機dalvik,然後就是創建工作進程載入和運行framework,然後就會看到待機的畫面。當然在這個過程中還發生了許多事情,啟動了許多服務,為了簡化起見,對於啟動過程偶只講解到此,感興趣的朋友可以自己結合著linux的啟動過程加以對比來學習。
現在來總結一下,實際上刷機包就是一個ROM文件的壓縮包,進入刷機模式後,recovery程序會把刷機包裡面的文件寫入ROM存儲區替換ROM存儲區的原有文件;當下次啟動手機的時候,會從ROM中載入剛剛替換過的文件,並利用這些文件來啟動和運行系統。這就是刷機包的全部功能和作用,看不懂的朋友可以反復看幾次,刷機的本質就是文件的覆蓋和替換操作,偶相信各位一定能看懂!
OK,現在大家已經知道ROM文件的zip壓縮包就是所謂的刷機包。製作刷機包的過程就是准備這些文件,然後重新把這些文件壓縮成一個zip包的過程,在製作的最後,使用簽名工具簽個名,就可以測試和發布刷機包了。雖然說起來就是一句話的事情,但是實際上准備這些文件的過程是非常痛苦和漫長的。
那麼update.zip壓縮包裡面的都包含哪些文件?這些文件又都是如何做出來的呢?hoho,現在開始漸漸接觸到問題的本質了,解壓縮這個update.zip壓縮包以後我們可以看到兩個目錄和一個文件:
boot.img <---文件,這是編譯內核源代碼生成的內核映像,然後與android源碼編譯出來的ramdisk.img一起通過mkbootimg工具創建出來的,圖省事的朋友也可以從網上其他的刷機包裡面拷貝一個能用的出來即可,基本上都差不多。
META-INF <---目錄,這個目錄是手工創建的,主要用來存放一個升級腳本update-script(這個腳本的內容與system目錄中包含的文件有很大關聯)以及保存若干刷機包內的apk文件的簽名。
system <---目錄,這個目錄就是編譯android的平台源代碼生成的,
其實最好的學習方式就是把現在互聯網上的那些update.zip包給解包,然後自己一個一個文件地看和分析,然後修改,嘗試做自己的刷機包。
對於這個boot.img,基本思路是編譯android kernel代碼,生成內核image然後利用mkbootimg感興趣的朋友可以參考下面這兩個wiki網站:
下面的做法偶都是在linux下面完成的(slackware 13.1):
(1)下載和編譯android的源代碼,具體過程不再贅述
如果各位還不知道repo sync之類的命令的話,可以參考網上的關於下載android源代碼以及編譯的文章,據偶所知這些文章非常豐富。編譯之前一定要注意平台的選擇,不同平台的驅動程序是不一樣的!這些參數可以通過:
$ cd android-src <---進入android的源代碼目錄
$ . build/envsetup.sh <---設置環境變數,運行完畢後,你可以輸入一下help命令,看看google的團隊提供了多少有用的便利命令,這對於我們以後修改代碼重新編譯非常有幫助。
$ lunch generic-eng <---開始配置android的源代碼的編譯選項
運行上述命令後會看到如下輸出:
wayne@wayne:~/android-src$ lunch generic-eng
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=2.1-update1
TARGET_PRODUCT=generic
TARGET_BUILD_VARIANT=eng
TARGET_SIMULATOR=false
TARGET_BUILD_TYPE=release
TARGET_ARCH=arm
HOST_ARCH=x86
HOST_OS=linux
HOST_BUILD_TYPE=release
BUILD_ID=ECLAIR
============================================
$ make -j2 <---只有單核的CPU的朋友可以嘗試此參數,雙核的朋友可以試試-j3,否則就老老實實運行make即可。
然後就是一個漫長的等待,這個時間大概有1-2小時左右(偶的機器比較慢),完全編譯完畢以後硬碟的佔用大概需要8個G左右。
(2)編譯完成以後,進入wayne@wayne:~/android-src/out/target/proct/generic目錄,應該會看到如下的文件:
android-info.txt
data
obj
ramdisk.img
sdk
system
userdata.img
clean_steps.mk
installed-files.txt
previous_build_config.mk
root
symbols
system.img
這里的system.img是不是很眼熟?!對拉,這個就是刷機包裡面好像也有一個叫做什麼system的目錄,那麼這個system.img裡面都有什麼呢?這裡面的東西其實就是當前目錄下的一個叫做system的目錄裡面的內容了,只是保存成了yaffs文件系統的格式。我們可以通過unyaffs工具來把system.img給解開來看看,就明白偶說話了。
unyaffs的代碼下載地址為:
在linux下編譯方法非常地簡單,只需要下載源代碼,然後運行:$ gcc -c unyaffs.c
$ gcc -o unyaffs unyaffs.o
即可生成這個unyaffs的解包工具,利用這個工具就可以把自己生成的system.img進行解包,然後修改裡面的內容了。
unyaffs使用方法非常簡單:
$ unyaffs system.img [回車]
即可將system.img解包成一個叫做system的目錄,裡麵包含了整個android的文件系統
(3)剛剛開始,不適合一切從頭來,還是老實一些,先從修改別的大牛們做得刷機包開始吧
首先拷貝一個從網上下載下來的刷機包,然後找一個目錄解壓縮(當然,這是最保險的做法,自己做這些目錄也沒有任何問題,只是比較費時間而已)
$ unzip xxxxxx.zip <--- 這個xxxxx.zip就是從網上下載的某刷機包(一定要跟你的代碼版本基本一致喔,偶在這里用的是2.1的刷機包)
(4)替換原有的system目錄
解壓縮刷機包以後,會看到在開篇的時候提到的兩個目錄,一個文件:
boot.img
META-INF
system
好了,可以把system目錄拷貝到別的路徑下備份一給,防止這些修改發生別的問題。然後把wayne@wayne:~/android-src/out/target/proct/generic這個目錄下面的system拷貝到當前的工作目錄下。注意,這個system目錄裡面有很多「符號鏈接」指向了toolbox。這些鏈接其實沒啥用,可以通過後面的update-script自動進行創建的,因此,需要用一個腳本把這些鏈接都刪掉。
可以參考:
這個網頁附件給出來的DeleteExtras.txt改寫成一個DeleteExtras.sh腳本來清除這些符號鏈接。
(5)修改update-script腳本
修改META-INF/com/google/android目錄下的那個叫做update-script的腳本,只要修改一下即可,主要是刪除一些不存在的文件以及增加一些文件的許可權之類的定義(語法十分清晰,一目瞭然)。把需要「預裝」到刷機包裡面的apk安裝程序都准備好,將這些apk拷貝到system/app目錄下即可。那個boot.img能不改就不改,因為這東西涉及到驅動和內核的問題,出了問題刷機包就啟動不了了。

5. 如何預編譯 Android 模擬器專用內核

Android源碼編譯之後生成的是ramdisk.img、system.img和userdata.img。而內核源碼編譯完成之後生成的是ZImage。在一般情況下Android源碼是不帶有內核源碼的,但是帶有一個鏡像,這樣在編譯完Android源碼之後就可以模擬器啟動了,如果要更換系統的內核,此時將高版本的內核源碼進行編譯生成ZImage然後替換Android系統的的鏡像。這樣使用模擬器啟動之後就可以查看內核是否已經被刷新。

6. 編譯時內核怎麼生成的ko文件

從網上找一個編譯模塊的makefile,放到你的模塊的文件夾裡面,然後修改裡面的路徑指定編譯的內核,以及目標名稱。make就可以了。

7. 怎樣編譯安卓內核

把ROM解壓出來,然後有很多文件夾,然後再進行編輯就可以了,可以根據自己的要求自己定製ROM

8. Android內核編譯時如何獲得.config文件

得到config之後,直接復制到你下載來的內核文件夾kernel下,更名為.config,打開終端,進入此目錄(假設你放在里你的home下,即~/kernel)運行make ARCH=arm menuconfig(ARCH=arm表示編譯的是arm平台的)

9. 你好,可以給安卓手機編譯一個增加驅動的內核嗎

首先你把你的***.ko的包放到/proc/sys/對應目錄 然後執行insmod 輸入絕對路徑 載入內核驅動 然後lsmod 查看一下有沒有這個內核模塊!如果能用的話 放到/etc/rc.local/配置文件即可!!!

10. 如何編譯android userdata.img

1、android文件系統的結構
android源碼編譯後得到system.img,ramdisk.img,userdata.img映像文件。其中, ramdisk.img是emulator的文件系統,system.img包括了主要的包、庫等文件,userdata.img包括了一些用戶數據,emulator載入這3個映像文件後,會把 system和 userdata分別載入到 ramdisk文件系統中的system和 userdata目錄下。因此,可以把ramdisk.img里的所有文件復制出來,system.img和userdata.img分別解壓到 ramdisk文件系統中的system和 userdata目錄下。

2、分離android文件系統出來
system.img,ramdisk.img,userdata.img映像文件是採用cpio打包、gzip壓縮的,可以通過file命令驗證:
file ramdisk.img,輸出:
ramdisk.img: gzip compressed data, from Unix, last modified: Wed Mar 18 17:16:10 2009
Android源碼編譯後除了生成system.img,userdata.img之外還生成system和 userdata文件夾,因此不需要解壓它們。Android源碼編譯後還生成root文件夾,其實root下的文件與 ramdisk.img 里的文件是一樣的,不過這里還是介紹怎樣把 ramdisk.img解壓出來:
將ramdisk.img復制一份到任何其他目錄下,將其名稱改為ramdisk.img.gz,並使用命令
gunzip ramdisk.img.gz
然後新建一個文件夾,叫ramdisk吧,進入,輸入命令
cpio -i -F ../ramdisk.img
這下,就能看見並操作ramdisk裡面的內容了。
然後把Android源碼編譯後生成的system和 userdata里的文件復制到 ramdisk/system和 ramdisk/userdata下。這樣就得到一個文件系統了。

3、使用網路文件系統方式掛載android文件系統
因此,需要建立/nfsroot目錄,再建立/nfsroot/androidfs目錄,把剛才的android文件系統改名為androidfs,並鏈接到/nfsroot/androidfs

4、android內核引導文件系統
android內核掛載/nfsroot/androidfs之後,根據init.rc,init.goldfish.rc來初始化並裝載系統庫、程序等直到開機完成。init.rc腳本包括了文件系統初始化、裝載的許多過程。init.rc的工作主要是:
1)設置一些環境變數
2)創建system、sdcard、data、cache等目錄
3)把一些文件系統mount到一些目錄去,如,mount tmpfs tmpfs /sqlite_stmt_journals
4)設置一些文件的用戶群組、許可權
5)設置一些線程參數
6)設置TCP緩存大小

閱讀全文

與安卓手機編譯內核生成文件相關的資料

熱點內容
五十五度灰 瀏覽:351
android入門到精通pdf明日科技 瀏覽:491
解壓縮文件怎麼老重啟 瀏覽:213
兒童智能關懷app蘋果為什麼不能用 瀏覽:707
tcpdump抓包命令 瀏覽:793
各大主播在用什麼app看電影 瀏覽:421
泰國恐怖片 和尚 瀏覽:219
寧夏品質壓縮機市場 瀏覽:186
日立螺桿壓縮機維修 瀏覽:427
識別英語單詞哪個app比較好 瀏覽:188
夫人被家丁強奸的泰國電影? 瀏覽:256
書香門第小說txt下載 瀏覽:454
服輸電影 瀏覽:814
女程序員手腕磨印子 瀏覽:864
5周歲看電影可以嗎 瀏覽:901
男女親熱把房子弄倒的韓國電影 瀏覽:979
什麼APP看台灣節目 瀏覽:350
csgo如何看伺服器 瀏覽:894
有一部美國電影叫什麼花? 瀏覽:138
命令行安裝dmg 瀏覽:646