導航:首頁 > 操作系統 > androidsrc路徑

androidsrc路徑

發布時間:2025-06-05 21:09:01

㈠ 沒有android內核的系統源代碼應該怎麼利用

1. 獲取源代碼
在cd ~/myandroid/kernel中執行以下命令
git clone git://android.git.kernel.org/kernel/common.git
這需要不少的時間,因為它會把整個linux Kernel的代碼復制下來。

然後進入到common目錄,然後用下面的命令來取得goldfish分支:
git checkout origin/android-goldfish-2.6.27 -b goldfish
這樣我們就在本地建立了一個名為goldfish的android-goldfish-2.6.27分支,代碼則已經與android-goldgish-2.6.27同步。
可以通過git branch來列出本地的所有分支。

2. 在Host OS上准備編譯環境
盡管很多人安裝完Ubuntu後第一件事情就是裝上build-essential,不過我在這里還是要提醒一下大家,另外做menuconfig的時候ncurses-devel庫也是必須的。運行以下命令,一次搞定:
sudo apt-get install build-essential ncurses-dev

3. 准備交叉編譯工具鏈
Android代碼樹中有一個prebuilt項目,包含了我們編譯內核所需的交叉編譯工具。如果你拿了完整的Android platform 的代碼樹,它就會在prebuilt目錄下。如果沒有拿完整的代碼樹也沒有關系,只要用Git clone一個或者到從GitWeb下載一個prebuilt項目 ,如果是從GitWeb下載的話記得解壓縮就行。

4. 設定環境變數
把prebuilt中的arm-eabi編譯器加入$PATH
$export PATH=$PATH:/myandroid/androidsrc/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin

設定目標arch為arm
$export ARCH=arm

打開kernel目錄下的Makefile文件,把CROSS_COMPILE指向剛才下載的prebuilt中的arm-eabi編譯器
CROSS_COMPILE ?= arm-eabi-

LDFLAGS_BUILD_ID = $(patsubst -Wl$(comma)%,%,/
$(call ld-option, -Wl$(comma)–build-id,))
這一行注釋掉,並且添加一個空的LDFLAGS_BUILD_ID定義,如下:
LDFLAGS_BUILD_ID =
下面的這段解釋來自陳罡的blog
把它注釋掉的原因是目前android的內核還不支持這個選項。–build-id選項,主要是用於在生成的elf可執行文件中加入一個內置的id,這樣在core mp,或者debuginfo的時候就可以很快定位這個模塊是哪次build的時候弄出來的。這樣就可以避免,每次都把整個文件做一遍效驗,然後才能得到該文件的是由哪次build產生的。對於內核開發者來說,這是很不錯的想法,可以節約定位模塊版本和其影響的時間。目前,該功能還出於early stage的狀態,未來的android或許會支持,但至少目前的版本是不支持的。
對這個–build-id選項感興趣的朋友,可以訪問下面的網址,它的作者已經解釋得非常明白了:
http://fedoraproject.org/wiki/Releases/FeatureBuildId
5、從SDK中獲得內核配置文件
大家都知道,內核編譯中有一步make menuconfig,用於配置kernel。這里我們可以先獲取官方的配置,如果必要的話再作改動。先啟動模擬器 emulator -avd xxxx ,然後通過adb pull命令(該命令用於從設備上復制文件到本地)即可完成。
$adb pull /proc/config.gz ~/
現在我們用gunzip把config.gz解開,把得到的config文件移動到kernel source所在的目錄,然後重命名為.config即可。
$ gunzip config.gz
$ mv config ~/sources/goldfish-kernel/.config

6、開始編譯
因為我們之前已經把SDK中.config復制到了kernel目錄下,如果需要修改配置,可以使用
make menuconfig
修改並保存配置,如果沒有特殊需要的話就可以直接用
make
命令來編譯內核了

7、測試生成的zImage
編譯內核的過程應該很順利,因為默認的配置對內核作了大幅的精簡,大約5~6分鍾就可以編譯完成了,會在最終會在arch/arm/boot目錄下面生成一個zImage,這個就是我們所要的運行在模擬器上的內核映像了。
下面我們就在模擬器中測試一下我們所生成的zImage。
emulator avd xxx -kernel ./zImage
其中xxx是AVD名稱 ,如果想輸出kernel log,請加上-show-kernel參數。

關於為實際設備編譯kernel
如果要為一個實際的設備比如說G1重新編譯內核映像,步驟和上述為一個運行在模擬器上的內核映像步驟基本一致,只是所需要的源代碼應當來自主線而不是goldfish分支。另外,編譯完成以後載入映像的方式也不同,需要通過USB將映像燒入nand flash。

閱讀全文

與androidsrc路徑相關的資料

熱點內容
單片機51開發板 瀏覽:971
綿陽在哪個app查社保 瀏覽:418
網劇程序員那麼可愛女主身世 瀏覽:809
程序員的一天周報 瀏覽:97
安卓如何把塗鴉的圖片還原 瀏覽:648
鬧鍾該怎麼加密 瀏覽:230
編譯原理答案第三版第二章 瀏覽:666
怎麼快速把app放在文件夾 瀏覽:325
怎麼截屏截長圖安卓 瀏覽:289
javabean轉json 瀏覽:40
python默認參數排列 瀏覽:621
官方體彩app下載哪個好 瀏覽:97
哪個app助農 瀏覽:202
南寧50m雲伺服器 瀏覽:601
查市值用哪個app 瀏覽:250
小圈app封了這些人去哪裡了 瀏覽:866
開源可商用小程序源碼 瀏覽:875
matlab編程是什麼語言 瀏覽:50
我的中文字典程序python 瀏覽:810
正版三維力控組態軟體加密狗價格 瀏覽:386