编译 内核
先 生成 .config
.config is etc of Makefile
make vmlinux 生成 vmlinux is elf
make Image 生成 image is bin
make zImage 生成 zImage is compress bin have uncompress zip
make modules 生成 become module
Kconfig -> make menuconfig -> .config -> makefile(obj-$(CONFIG_xxx) += xxx.o) -> Make
.config -> include/linux/autoconf.h (if CONFIG_XXX=y then #define CONFIG_XXX)
if(is module) then #define CONFIG_XXX_MODULE
kernel.header 只有头文件
kernel.devel 源文件
make M=//M is var in Makefile
make modules_install 生成在目录 /lib/modules
make modules_install INSTALL_MOD_PATH=/arm/qt2440_root/
就生成在目录 /arm/qt2440_root/lib/modules
modprobe
touch modules.dep
path/mde.ko: path/xx.ko
path/xx.ko:
dempod -a -b path/ version
将到lib/modules/ 生成所有模块的依赖
make s3c2410_defconfig
内核提供的相应平台的config
#include
解决与平台相关的头文件引用 使用让 asm 连接 到 相应 asm-arch
每个进程都有一个内核栈 内核程序数使用调用他的进程的内核栈
进程的内核空间以8k对齐。 高为栈, 最底部为thread_info have pointer to task_struct
头文件尽量 在.c 文件里 #include 不然容易 (李不称)
在.h中用#include的情况只有
#include "other.h"
struct something {
int a;
int b;
struct other sss;
};
对于下面情况 这样:
struct other no;
struct something {
int a;
int b;
struct other *sss;
};
阅读(645) | 评论(0) | 转发(0) |