首页 > 其他分享 >树莓派操作系统-利用Makefile创建内核镜像文件kernel8.img

树莓派操作系统-利用Makefile创建内核镜像文件kernel8.img

时间:2024-09-13 21:46:11浏览次数:1  
标签:树莓 img 镜像文件 编译 构建 BUILD DIR

编写树莓派内核映像的过程可以等同于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

标签:树莓,img,镜像文件,编译,构建,BUILD,DIR
From: https://www.cnblogs.com/kirito-/p/18412943

相关文章

  • 动物目标检测——基于YOLOv5和树莓派4B平台
    目标检测在计算机视觉领域中具有重要意义。YOLOv5(YouOnlyLookOne-level)是目标检测算法中的一种代表性方法,以其高效性和准确性备受关注,并且在各种目标检测任务中都表现出卓越的性能。本文将详细介绍如何在性能更强的计算机上训练YOLOv5模型,并将训练好的模型部署到树莓派4B上,通过......
  • windwos上通过qemu直接开启img、qcow2等格式磁盘镜像(无需转vmdk)
    qemuQEMU(QuickEMUlator)是一款开源的虚拟化软件,能够模拟多种硬件平台,并支持多种虚拟化技术,如KVM(Kernel-basedVirtualMachine)加速。QEMU能够在多个操作系统上运行,包括Windows、Linux和macOS。下载QEMU:访问QEMU官方网站或通过包管理器下载适用于Windows的QEMU......
  • position定位<img>标签【示例】
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title></head><style>.header{width:100%;height:48px;background-co......
  • Windows电脑使用VNC远程连接本地局域网无公网IP树莓派5
    文章目录前言1.使用RaspberryPiImager安装RaspberryPiOS2.Windows安装VNC远程树莓派3.使用VNCViewer公网远程访问树莓派3.1安装Cpolar步骤3.2配置固定的公网地址3.3VNC远程连接测试4.固定远程连接公网地址4.1固定TCP地址测试前言树莓派因其小巧的......
  • 记录一个vscode无法ssh树莓派,但是mobaxterm可以ssh登录的问题
    一、为什么会遇到这个问题帮别人开发一个树莓派小车的时候,买了一个新的树莓派3B,回来安装好桌面系统之后开启了ssh功能,便想开始使用vscode来ssh开发,省的后续一直要插着屏幕开发,很麻烦。但是问题就来了,在确认过hostname、IP地址、端口都无误的情况下,vscode无论无何都没法ssh登录,于......
  • YOLO 自动标注工具autolabelimg(适用yolov5 v6.1)
    一、获取自定义数据集的YOLOv5.pt权重  首先,手动标注一部分数据集,训练YOLOV5模型,得到best.pt。二、下载和安装autolabelimg   (1)github链接:  https://github.com/wufan-tb/AutoLabelImg.git  手动下载.zip ,也可以clone:gitclonehttps://github.com/w......
  • 树莓派raspiOS换源
    新装了个树莓派,更新时候发现连不上网,遂换国内源。由于近期AI用习惯了,就没找官方说明,结果......果然踩雷了。所以还是得看官方提供的说明。清华开源镜像站Raspbian软件仓库1、查看系统架构$uname-maarch64提示aarch64用户直接参考Debian帮助Debian软件源大部分Debia......
  • 某宝拍立得item_search_img接口获取数据详情指南
    在当今数字化的商业环境中,淘宝API接口为开发者提供了强大的工具,允许他们与淘宝平台进行交互,获取商品信息、处理交易等。然而,正确使用这些接口需要遵循一定的技术规范和注意事项,以确保程序的稳定性、安全性和高效性。以下是一些关键的技术要点和注意事项。一、关键技术要点......
  • 树莓派通过串口驱动HC-08蓝牙模块
    树莓派通过串口驱动HC-08蓝牙模块文章目录树莓派通过串口驱动HC-08蓝牙模块一、HC-08蓝牙模块介绍二、树莓派与蓝牙模块硬件连接三、树莓派通过蓝牙控制设备一、HC-08蓝牙模块介绍蓝牙模块,是一种集成的蓝牙功能的PCB板,用于短距离无线通信,按照功能分为蓝牙数据模块......
  • Python和MATLAB(Java)及Arduino和Raspberry Pi(树莓派)点扩展函数导图
    ......