在高通平台Android環境下編譯核心模組【轉】

來源:互聯網
上載者:User

標籤:env   對比   獨立   dir   修改   init   強制   code   first   

本文轉載自:http://blog.xeonxu.info/blog/2012/12/04/zai-gao-tong-ping-tai-androidhuan-jing-xia-bian-yi-nei-he-mo-kuai/

高通Android環境中Linux核心會作為Android的一部分進行編譯,直接使用make即可一次性從頭編到尾。而有的平台比如Marvell,核心的編譯操作相對比較獨立,必須使用標準的核心編譯命令進行單獨編譯。一般來說,用高通的這種方式比較傻瓜化,一步到底的感覺;而用Marvell的方式使用者幹預較多,靈活性也更大。當然這裡不是比較他們孰優孰劣,對我來說這兩種方式各有千秋。在遇到具體問題時,有時還會覺得獨立編譯核心的方式比較方便,比如編譯核心模組這一點上。

編譯核心模組之前必須先編譯核心,編譯核心之前必須先指定核心配置。在獨立編譯核心情況下,編譯一遍核心後,可以直接使用 make module 來編譯核心模組,如果修改了相應模組檔案,使用相同的命令也能很快的進行增量編譯。而在高通環境下,由於核心的編譯過程已經被整合到Android的編譯中,所以每次編譯核心或者核心模組時,都必須通過Android的編譯環境進行啟用。雖然Android提供諸如 make bootimage 命令,可以只編譯bootimage相關內容,但是Android龐大的編譯體系在初始化時也會佔用很多的時間。前段時間在調試一個獨立的核心模組時就一直被這個問題困擾著,每次修改模組代碼後都必須通過 make bootimage 來編譯。雖然只有一個檔案,但是每次編譯都花費至少1min30sec,嚴重影響了開發進度。為此,自己參考核心模組獨立編譯的Makefile和Android的環境特點寫了一個核心模組編譯Makefile。

123456789101112131415161718192021
# Author: zhiqiang.xu# EMail:  [email protected]CROSS_ARCH:=ARCH=arm CROSS_COMPILE="$(ARM_EABI_TOOLCHAIN)/arm-eabi-"KDIR:=$(ANDROID_PRODUCT_OUT)/obj/KERNEL_OBJ/PWD:=$(shell pwd)obj-m:= my_module.o.PHONY: modules package cleanall:packagemodules:    @if [ "$(ANDROID_BUILD_TOP)_yes" = "_yes" ]; then echo "You have to run \". build/envsetup.sh\" to init enviroment first. \nAnd then you have to run\"choosecombo\" to setup the project."&&exit 1; fi    @if [ ! -d $(KDIR) ]; then echo "Build kernle first."&&cd $(ANDROID_BUILD_TOP)&&make bootimage&&cd -; fi    $(MAKE) $(CROSS_ARCH) -C $(KDIR) M=$(PWD) modulespackage:modules    @mkdir -p ./package    @cp $(obj-m:.o=.ko) ./packageclean:    rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions *.order *.symvers package

該Makefile預設會將目前的目錄下的 my_module.c 檔案編譯為核心模組。同時,在編譯時間會強制檢查Android的環境是否正確配置,如果沒有配置它會進行相應提示後退出編譯處理。編譯模組時使用的核心配置是編譯Android時指定項目所配置的核心配置。如果核心還沒有編譯,則在編譯模組之前會自動編譯核心主體。如果一切OK,則每次只會編譯修改過的模組檔案。編譯好後會將模組檔案單獨拷貝到目前的目錄下的 package 目錄中,方便使用。

 

使用該編譯指令碼後,模組的編寫調試效率高了不少,至少每次編譯模組都可以在5sec內搞定了。加上上機實測調試,也能在30sec內完成。生命很可貴,像我一樣當個懶人吧。

在高通平台Android環境下編譯核心模組【轉】

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.