linux内核Makefile和busybox编译

刚开始学习Linux时的一些记录

linux内核配置体验

  • 在arch/arm/configs/目录下面找到相似的配置文件,其名称一般为xxx_defconfig
  • make xxx_defconfig
  • make menuconfig配置你的内核,
  • 配置完成后生成 .config文件在TOPDIR,该文件由于是以‘.’开头,故在linux下是 一个隐藏的文件。

生成的配置信息如 CONFIG_XXX,如CONFIG_DM9000,其可能出现的位置如下

  • c源代码,条件编译
  • Makefile以及子目录的Makefile,形如objs-$(CONFIG_DM9000) += dm9000.o
  • include/config/auto.conf,包含于顶层Makefile中。
  • include/linux/autoconfig.h,包含于某个C文件的头文件中,

以上的这些信息都来自于.config文件

注:无论在make menuconfig的时候将CONFIG_XXX选中为’m’ or ‘ y’在autoconf.h都定义为1,m和y的差别区别在于子目录下的Makefile

 

linux Makefile分析

  • 顶层Makefile,生成配置文件.config,生成内核
  • arch/$(ARCH)/Makefile,架构相关的Makefile
  • srcript/Makefile.*和Makefile

 

a.c b.c

y:表示编译进内核

obj-y += a.o b.o

m:表示编程为模块

obj-m += ab.o

 

vmlinux:$(vmlinux-lds) $(vmlinux-init) $(vmlinux-main) \

        $(kallsyms.o) FORCE

 

vmlinux-init := $(head-y) $(init-y)

vmlinux-main := $(core-y) $(libs-y) $(drivers-y) $(net-y)

vmlinux-all  := $(vmlinux-init) $(vmlinux-main)

vmlinux-lds  := arch/$(ARCH)/kernel/vmlinux.lds

 

head-y在arch/$(ARCH)/Makefile里面定义

head-y := arch/$(ARCH)/kernel/head_$(MMU_TEXT).o \

          arch/$(ARCH)/kernel/init_task.o

 

init-y := init/

init-y := $(patsubst %/,%/build-in.o,$(init-y))

 

core-y := usr/ kernel/ mm/ fs/ ipc/ security/ crypto/ block/

core-y := $(patsubst,%/,%/build-in.o,$(core-y))

 

lib-y := lib

lib-y := lib/lib.a lib/build-in.o

 

driver-y := driver/ sound/

net-y := net/build-in.o

 

 

BusyBox编译安装体验

配置

  • make menuconfig
  • Busybox Setting->Build Option->选择编译为动态链接还是静态链接
  • Install Option->选中Don’t use/usr
  • Busybox install prefix(xxx/rootfs)
  • make就会在xxx/rootfs生成

注:在编译的过程中可能出现的错误,

  • 编译工具有没有库,b,将出错的地方利用menuconfig不进行编译

制作基本文件系统

  • mkdir rootfs
  • cd rootfs;mkdir bin sbin dev etc usr mnt var sys and so on.
  • mknod –m 600 console c 5 1

mknod –m 600 null c 1 3

4, 安装rootfs/etc文件

5, 编译内核模块,在内核源文件目录make modules ARCH=XXX CROSS_COMPILE=XXX-XXX-

安装内核模块,

make modules_install ARCH=XXX INSTALL_MOD_PATH=rootfs/lib/modules

 

posted on 2024-05-16 14:12  sudochen  阅读(23)  评论(0编辑  收藏  举报

导航