欢迎转载,转载时请保留作者信息,谢谢。
这些定义很重要,不阅读源代码是体会不到的,在阅读源代码时,看看这些定义,会事半功倍。
链接文件:
export KBUILD_LDS := arch/$(SRCARCH)/kernel/vmlinux.lds
PAGE_OFFSET:src\arch\arm\include\asm\memory.h : 内核地址空间 = CONFIG_PAGE_OFFSET, 3G – 4G
TEXT_OFFSET:src\arch\arm\Makefile : 内核空间中内核代码真正开始的地方 一般为0XC0008000 = 3G + 0X8000
%.ko: prepare scripts FORCE:src/Makefile 定义模块编译
%/: prepare scripts FORCE:src/Makefile如何循环进入底层目录。
src\scripts\Kbuild.include: 中定义了 build 变量 build := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build obj
src\scripts\Makefile.build: 编译时采用的Makefile
src\scripts\Kbuild.include中定义了if_changed_rule
kbuild-dir := $(if $(filter /%,$(src)),$(src),$(srctree)/$(src))
kbuild-file := $(if $(wildcard $(kbuild-dir)/Kbuild),$(kbuild-dir)/Kbuild,$(kbuild-dir)/Makefile)
include $(kbuild-file)
上面颜色字体决定了进入具体目录的执行。
链接顺序:
src/Makefile:
export KBUILD_VMLINUX_INIT := $(head-y) $(init-y)
export KBUILD_VMLINUX_MAIN := $(core-y) $(libs-y) $(drivers-y) $(net-y)
其中Makefile 中的变量export 能被子Makefile继承。
Linux内核配置编译及基本调试方法
一.Linux内核配置编译 1. 交叉编译设置:make ARCH=arm CROSS_COMPILE=arm-linux- 注:也可以直接修改顶层Makefile ARCH ?= arm CROSS ...
从四个问题透析Linux下C++编译&;链接
摘要:编译&链接对C&C++程序员既熟悉又陌生,熟悉在于每份代码都要经历编译&链接过程,陌生在于大部分人并不会刻意关注编译&链接的原理.本文通过开发过程中碰到的四个典型 ...
Linux 内核参数 和 Oracle相关参数调整
Linux 内核参数 和 Oracle相关参数调整 分类: Oracle Basic Knowledge2009-10-14 12:23 9648人阅读 评论(0) 收藏 举报 oraclelinux ...
【Linux内核】编译与配置内核(x86)
[Linux内核]编译与配置内核(x86) https://www.cnblogs.com/jamesharden/p/6414736.html
linux内核中的每cpu变量
一.linux中的每cpu变量 看linux内核代码的时候,会发现大量的per_cpu(name, cpu),get_cpu_var(name)等出现cpu字眼的语句.从语句的意思可以看出是要使用与当 ...
Linux内核的编译安装
前言 Linux内核是Linux操作2347系统的核心,也是整个Linux功能体现的核心,就如同发动机在汽车中的重要性.内核主要功能包括进程管理.内存管理.文件管理.设备管理.网络管理等.Linux内 ...
linux下 GCC编译链接静态库&;动态库
静态库 有时候需要把一组代码编译成一个库,这个库在很多项目中都要用到,例如libc就是这样一个库, 我们在不同的程序中都会用到libc中的库函数(例如printf),也会用到libc中的变量(例如以后 ...
基于QEMU的ARM Cortex-A9开发板Vexpress-ca9的Linux内核的编译和运行
宿主机:Ubuntu16.04 x64(Linux内核4.4.0) 交叉编译工具链:gcc-arm-linux-gnueabiarm-linux-gcc:4.4.3QEMU:2.5.0Linux ke ...
linux内核同步之每CPU变量、原子操作、内存屏障、自旋锁【转】
转自:http://blog.csdn.net/goodluckwhh/article/details/9005585 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 一每 ...
随机推荐
python验证登录
一个web2.0时代的网站,自然少不了用户注册,登录,验证的功能,那么python可以怎样实现登录验证呢 这里我们使用装饰器来做登录验证 网站构成 假设我们有这样一个网站,是一个类似与博客园这种多个用 ...
android之进度条组件ProgressBar
首先是main.xml文件 代码如下: [fi ...
windows安装go-sqlite3失败,提示找不到gcc
windows安装go-sqlite3失败,提示找不到gcc go get github.com/mattn/go-sqlite3时失败,提示exec: “gcc”: executable file ...