今天拿到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编译成功。配置