登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
签到
每天签到奖励2-10圆
导读
排行榜
TG频道
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
VIP申请
VIP网盘
网盘
联系我们
发帖说明
每日签到
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
安全
›
Lesson01-利用Makefile创建内核镜像文件kernel8.img ...
Lesson01-利用Makefile创建内核镜像文件kernel8.img
[ 复制链接 ]
钦遭聘
2025-6-8 13:15:05
编写树莓派内核映像的过程可以等同于gcc的编译过程:预处理、编译、汇编、链接,后面还会加一步:将可执行文件转换成二进制的镜像文件。
在MakeFile里的构建过程分为3步:
1.将.c文件经过预处理、编译、汇编生成.o文件,将.S文件经过汇编生成.o文件。
2.将.o文件经过链接生成.elf可执行文件。
3.将.elf文件转换成二进制的.img镜像文件。
#变量-交叉编译工具
ARMGNU ?= aarch64-linux-gnu
#变量-编译可选参数
COPS = -Wall -nostdlib -nostartfiles -ffreestanding -Iinclude -mgeneral-regs-only
#变量-汇编可选参数
ASMOPS = -Iinclude
#变量-源文件目录
SRC_DIR = src
#变量-生成文件目录
BUILD_DIR = build
#构建-all首个构建对象
all: kernel8.img
#构建-clean
clean:
rm -rf $(BUILD_DIR) *.img
#构建-.c变.o
$(BUILD_DIR)/*_c.o: $(SRC_DIR)/*.c
mkdir -p $(@D)
$(ARMGNU)-gcc $(COPS) -MMD -c -o $@ $<
#构建-.S变.o
$(BUILD_DIR)/*_S.o: $(SRC_DIR)/*.S
$(ARMGNU)-gcc $(ASMOPS) -MMD -c -o $@ $<
#变量-.c文件
C_FILES = $(wildcard $(SRC_DIR)/*.c)
#变量-.S文件
ASM_FILES = $(wildcard $(SRC_DIR)/*.S)
#变量-.o文件
OBJ_FILES = $(C_FILES:$(SRC_DIR)/%.c=$(BUILD_DIR)/%_c.o)
OBJ_FILES += $(ASM_FILES:$(SRC_DIR)/%.S=$(BUILD_DIR)/%_S.o)
#变量-.d文件
DEP_FILES = $(OBJ_FILES:%.o=%.d)
#函数-包含依赖.d文件
-include $(DEP_FILES)
#构建-.o变.elf .elf变.img
kernel8.img: $(SRC_DIR)/linker.ld $(OBJ_FILES)
$(ARMGNU)-ld -T $(SRC_DIR)/linker.ld -o $(BUILD_DIR)/kernel8.elf $(OBJ_FILES)
$(ARMGNU)-objcopy $(BUILD_DIR)/kernel8.elf -O binary kernel.img
复制代码
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
Lesson01
利用
Makefile
创建
内核
相关帖子
MMoE学习笔记:利用门控专家网络高效建模多任务关系
利用ChIP-seq及多组学解析肝癌仑伐替尼耐药机制(国人佳作)
利用Sentinel-2监测北京奥林匹克森林公园2024年NDVI变化
创建兼容dll和嵌入源码窗口两种方式的Qt嵌入VTK8.2模板Demo
TListView进阶使用(3),创建自定义的列表项打造天气预报程序
使用IDEA创建Spring Boot 3项目(gradle篇)
GitHub上创建仓库并clone到当前开发环境
利用CI机制管控jar依赖树
借助Aspose.Email,在 Python中创建事件日历
使用TCL脚本快速创建Quartus工程
vip免费申请,1年只需15美金$
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
业界
MMoE学习笔记:利用门控专家网络高效建模多任务关系
0
96
谯梨夏
2025-10-01
安全
利用ChIP-seq及多组学解析肝癌仑伐替尼耐药机制(国人佳作)
2
490
表弊捞
2025-10-03
业界
利用Sentinel-2监测北京奥林匹克森林公园2024年NDVI变化
0
880
蔺蓉城
2025-10-03
业界
创建兼容dll和嵌入源码窗口两种方式的Qt嵌入VTK8.2模板Demo
0
933
吕颐然
2025-10-03
业界
TListView进阶使用(3),创建自定义的列表项打造天气预报程序
0
311
蝌棚煌
2025-10-03
业界
使用IDEA创建Spring Boot 3项目(gradle篇)
0
159
印萍
2025-10-05
代码
GitHub上创建仓库并clone到当前开发环境
0
154
寨重
2025-10-06
安全
利用CI机制管控jar依赖树
0
614
郁兰娜
2025-10-08
业界
借助Aspose.Email,在 Python中创建事件日历
0
676
巴沛若
2025-10-10
安全
使用TCL脚本快速创建Quartus工程
0
740
楞粳
2025-10-15
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
签约作者
程序园优秀签约作者
发帖
钦遭聘
2025-6-8 13:15:05
关注
0
粉丝关注
26
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
anyue1937
9994893
dage888
999994
3934307807
992122
4
富账慕
9983
5
邹语彤
9982
6
二艰糖
10000
7
刎唇
9993
8
匝抽
9986
9
聚怪闩
9960
10
孙淼淼
9977
查看更多