今天拿到TI的ICS源碼,發如今system/core/adb目錄下使用mm出錯:
ui
make: Entering directory `/home/weike/TI/TI_ICS_CUR'
make: *** No rule to make target `out/target/product/generic/obj/lib/crtbegin_dynamic.o',
needed by `out/target/product/generic/obj/EXECUTABLES/adb_intermediates/LINKED/adb'. Stop.
make: Leaving directory `/home/weike/TI/TI_ICS_CUR
分析得知,我使用的處理器爲AM335X,上述配置使用了默認的generic配置,
可是我這裏的ICS代碼在lunch之後沒有看到任何有關AM335X的信息,只有如下信息:
spa
You're building on Linuxdebug
Lunch menu... pick a combo:get
1. full-eng源碼
2. full_x86-eng產品
3. vbox_x86-eng編譯
Which would you like? [full-eng]
因此須要給TI的這個ICS添加lunch選項,如下是具體步驟:
1.查看device/ti/下有哪些目錄,正好找到我須要的目錄:device/ti/am335xevm;
2.查看device/ti/am335xevm是否具備本身的AndroidProducts.mk文件,我這裏,TI已經有了AndroidProducts.mk文件;
3.查看device/ti/am335xevm是否具備vendorsetup.mk文件,這裏沒有這個文件,也是lunch看不到am335x信息的緣由
4.在 device/ti/am335xevm目錄下建立一個vendorsetup.sh文件,寫入如下內容:
add_lunch_combo am335xevm-eng
5.以後使用. build/envsetup.sh時,就能夠看到如下輸出:
including device/ti/am335xevm/vendorsetup.sh
具體原理:
envsetup.sh調用product_config.mk完成產品型號的匹配,product_config.mk根據vendorsetup.sh中添加的型號,收集全部AndroidProducts.mk文件,在每一個AndroidProducts.mk中找到與型號名稱匹配的xxx.mk文件,例如在device/ti/am335xevm/AndroidProduct.mk文件中內容是:
PRODUCT_MAKEFILES := $(LOCAL_DIR)/am335xevm.mk
那麼,爲了在尋找是可以匹配成功,在device/ti/am335xevm/vendorsetup.sh中就要寫成:
add_lunch_combo am335xevm-eng
原理
其中am335xevm必定要和am335xevm.mk名稱一致,至於後面的「-eng」名稱,也是在"-eng","userdebug"中選取
經過以上配置,而後從新運行envsetup和lunch之後,出現am335xevm-eng選項,選擇後,進入adb目錄,使用mm編譯成功。配置