imx6.内核Makefile编写

本文提供了一步式指南,详细说明如何使用Linux内核源代码在ARM架构上编译并构建模块。包括配置环境、运行make命令、清理编译产物等关键步骤。
KERNELDIR =/home/jack/jack-linux/android_hejia/Android4.4.2/kernel_imx


all:
#make -C $(KERNELDIR) M=`pwd` modules
make -C  $(KERNELDIR)  M=`pwd` modules ARCH=arm CROSS_COMPILE=/home/jack/jack-linux/android_hejia/Android4.4.2/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin/arm-eabi-


clean:
rm -rf modules.order *.o workqueue.o  Module.symvers *.mod.c *.ko


#obj-m +=workqueue.o
#obj-m +=time.o
#obj-m  +=list_add_tail_2.o
obj-m +=tasklet.o
### 正点原子 IMX6ULL 裸机编程 Makefile 编写指南 #### 1. Makefile 结构概述 对于正点原子IMX6ULL裸机编程而言,Makefile主要用于管理源文件的编译过程以及链接操作。通过定义变量、目标和依赖关系来简化构建流程。 #### 2. 变量设置 在Makefile中通常会设定一些全局使用的路径和其他配置参数: ```makefile # 定义内核目录位置 KERNELDIR := /home/user/linux/imx6ull/kernel-source # 获取当前工作目录 CURRENT_PATH := $(shell pwd) # 指定要编译的目标模块对象文件 obj-m += my_module.o ``` 上述代码片段展示了如何指定内核源码的位置,并获取当前的工作目录作为后续命令执行的基础路径[^2]。 #### 3. 构建规则 接下来是具体的构建指令部分,这里包含了两个主要的操作:“build”用于创建驱动程序,“clean”用来清理之前生成的对象文件等临时产物: ```makefile all: build build: $(MAKE) -C $(KERNELDIR) M=$(CURRENT_PATH) modules clean: rm -rf *.o .*cmd .*.d .*.mod.c $(MAKE) -C $(KERNELDIR) M=$(CURRENT_PATH) clean ``` 这段脚本实现了当用户输入`make`时自动触发`build`任务;而`make clean`则负责清除不必要的中间件和最终输出物。 #### 4. 链接器脚本与启动代码处理 针对裸机环境下的开发项目,还需要特别注意链接器脚本(lds)的应用,它决定了应用程序各个段(.text,.data...)的具体布局情况。另外,由于缺乏操作系统支持,所以也需要准备一段汇编写的初始化代码(如start.s),该文件将完成CPU状态切换至特权模式等工作。 ```makefile LDS_FILE = link.ld # 设置链接器描述文件名 STARTUP_ASM = start.o # 初始装配语言源文件名称转换成object形式 %.elf : %.bin $(STARTUP_ASM) @echo "Linking $@" ld -T $(LDS_FILE) -o $@ $^ --gc-sections ``` 以上示例说明了如何利用自定义链接器脚本来指导编译工具链进行最后一步——把所有已编译好的二进制数据按照预定方案组合起来形成可执行映像文件(*.elf)[^1]。 #### 5. 添加额外选项 (Optional) 如果希望进一步优化或扩展功能,则可以考虑加入更多特性到Makefile当中去,比如增加调试信息的支持(-g), 或者启用特定架构特性的优化标志(-march=armv7-a). ```makefile CC_FLAGS += -Wall -O0 -ggdb -mcpu=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard ``` 这行语句向GCC传递了一系列附加参数,使得产生的机器码更适合于ARM Cortex-A系列处理器运行的同时也便于后期分析问题所在.
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值