導航:首頁 > 操作系統 > 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路徑相關的資料

熱點內容
php通信加密 瀏覽:819
nginx配置php站點 瀏覽:451
手機怎麼給圖片加密 瀏覽:261
generatorjava 瀏覽:119
絕地求生未來之役安卓怎麼卡畫質 瀏覽:971
3針加密4針防塵網材質 瀏覽:291
單片機所有程序解釋 瀏覽:571
php寫入xml 瀏覽:974
daemon命令行錯誤 瀏覽:569
php判斷是否為中文 瀏覽:343
活塞壓縮機噴油 瀏覽:101
scr指標源碼 瀏覽:730
手錶pdf 瀏覽:967
高海礦山空氣壓縮機 瀏覽:292
逆向思維pdf 瀏覽:720
java克隆實現 瀏覽:415
hdfsbalance命令 瀏覽:766
程序員養老院段子 瀏覽:483
伺服器路由表怎麼用 瀏覽:968
php內置函數源碼 瀏覽:849