内核编译:
例如:TI AM437x 为例
tisdk_am437x-evm_defconfig: arch/arm/configs
1.配置
make ARCH=ARM CROSS_COMPILE=arm-linux-gnueabihf- tisdk_am437x-evm_defconfig
2.修改配置(可选)
make ARCH=ARM CROSS_COMPILE=arm-linux-gnueabihf- tisdk_am437x-evm_defconfig menuconfig
3.编译内核格式为zImage
make ARCH=ARM CROSS_COMPILE=arm-linux-gnueabihf- zImage
4.编译模块
make ARCH=ARM CROSS_COMPILE=arm-linux-gnueabihf- modules
5.模块安装位置指定及是否strip
make ARCH=ARM CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MODE_PATH=(自已指定) INSTALL_MODE_STRIP=(1 or 0) modules_install
6.编译设备树
make ARCH=ARM CROSS_COMPILE=arm-linux-gnueabihf- am437x-gp-evm.dtb
或者使用dtc工具也可以.
7.删除编译内核时产生的文件
(1)删除配置及生成的文件
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- mrproper
(2)删除生成的文件配置保留
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- clean
uboot编译:
am43xx_evm_defconfig: configs
LINUXKERNEL_INSTALL_DIR:内核位置,找到dtc工具的位置
1.配置
make CROSS_COMPILE=arm-linux-gnueabihf- am43xx_evm_defconfig
2.修改配置(可选)
make CROSS_COMPILE=arm-linux-gnueabihf- am43xx_evm_defconfig menuconfig
3.编译
make CROSS_COMPILE=arm-linux-gnueabihf- DTC=$(LINUXKERNEL_INSTALL_DIR)/scripts/dtc/dtc
4.清除配置及生成的文件
make CROSS_COMPILE=arm-linux-gnueabihf- distclean
第三方驱动模块编译:
例如:hello.c
Makefile编写:
obj-m+=hello.o or obj-y+=hello.o
KERN_DIR= 内核编译后源码目录,因为模块需要使用内核配置,头文件和内核编译后的符号表
#如果在PC上,则
KERN_DIR=/lib/modules/$(uname -r)/build/
#M=指的是驱动源码目录
all:
make -C $(KERN_DIR) M=`pwd` modules