ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

读书笔记--内核Makefile与链接脚本

2021-07-25 23:01:35  阅读:182  来源: 互联网

标签:kernel 读书笔记 -- Makefile 编译 内核 ARCH arm


 

1、内核Makefile的版本与重要变量:

 

  (1)Makefile中刚开始定义了kernel的内核版本号。这个版本号挺重要(在模块化驱动安装时会需要用到),要注意会查,会改。

 路径:/kernal/Makefile 

1 VERSION = 2
2 PATCHLEVEL = 6
3 SUBLEVEL = 35
4 EXTRAVERSION = .7
5 NAME = Yokohama
6 
7 .....

  (2)kernel的顶层Makefile中定义了2个变量很重要:

      ARCH

      CROSS_COMPILE

    ARCH决定当前配置编译的路径,譬如ARCH = arm的时候,将来在源码目录下去操作的arch/arm目录。

    CROSS_COMPILE用来指定交叉编译工具链的路径和前缀。
  (3)在make编译内核时,也可以通过命令行给内核makefile传参,传给顶层Makefile。如make O=xxx可以指定不在源代码目录下编译,而到另外一个单独文件夹下编译。

      CROSS_COMPILE = xxx

      ARCH = xxx

      O=xxx

   所以有时候你会看到别人编译内核时:make O=/tmp/mykernel ARCH=arm CROSS_COMPILE=/usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-

 

 

2、链接脚本:

(1)kernel的连接脚本并不是直接提供的,而是提供了一个汇编文件vmlinux.lds.S,然后在编译的时候再去编译这个汇编文件得到真正的链接脚本vmlinux.lds
  vmlinux.lds.S在arch/arm/kernel/目录下。

(2)入门在哪里?从vmlinux.lds中ENTRY(stext)可以知道入口符号是stext,发现arch/arm/kernel/目录下的head.Shead-nommu.S中都有。
  head.S是启用了MMU情况下的kernel启动文件,相当于uboot中的start.S。

  head-nommu.S是未使用mmu情况下的kernel启动文件。

 

标签:kernel,读书笔记,--,Makefile,编译,内核,ARCH,arm
来源: https://www.cnblogs.com/ben002/p/15059369.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有