安卓编译命令:
1. source build/envsetup.sh //载入资源
2. lunch
3. make -j8 //全部编译
如果部分快速编译:
make -j8 pl
make -j8 lk
make -j8 kernel
make -j8 kernel bootimage //快速编译内核
make -j8 systemimage
make clean
make clean-pl
make clean-lk
make clean-kernel
如果出现类似的错误,在make执行之前,执行以下内容。
export LC_ALL=C
make clean
编译内核时候的小知识
在写驱动的时候,makefile 里面的obj-y或者obj-m是不同的,区别是:
1.obj-m表示把文件test.o作为"模块"进行编译,不会编译到内核,但是会生成一个独立的 “test.ko” 文件;
2.obj-y表示把test.o文件编译进内核;
以happy.c为例,
ccflags-y += -I$(srctree)/drivers/misc/mediatek/car/include/
obj-y += happy.o
或者
ccflags-y += -I$(srctree)/drivers/misc/mediatek/car/include/
obj-m += happy.o
注意
将写完的简单驱动,放到自己项目代码编译,检查能否编译到自己项目的内核里面,之后依次执行安卓编译命令,查看是否项目下out/target/product/$PROJECT/obj/KERNEL_OBJ目录,在编译之前,请先将原本的KERNEL_OBJ目录移除,然后编译,如果成功,就会生成新的KERNEL_OBJ目录