设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 手机 数据 公司
当前位置: 首页 > 服务器 > 搭建环境 > Windows > 正文

探索Linux内核:Kconfig/kbuild的秘密(2)

发布时间:2019-08-15 20:33 所属栏目:117 来源:Cao Jin
导读:递归 make 的 配方 recipe 被扩展开是这样的: make -f scripts/Makefile.build obj=init need-builtin=1 这意味着 make 将进入 scripts/Makefile.build 以继续构建每个 built-in.a 。在 scripts/link-vmlinux.sh

递归 make 的配方recipe被扩展开是这样的:

  1. make -f scripts/Makefile.build obj=init need-builtin=1

这意味着 make 将进入 scripts/Makefile.build 以继续构建每个 built-in.a。在scripts/link-vmlinux.sh 的帮助下,vmlinux 文件最终位于源根目录下。

vmlinux 与 bzImage 对比

许多 Linux 内核开发人员可能不清楚 vmlinuxbzImage 之间的关系。例如,这是他们在 x86-64 中的关系:

探索Linux内核:Kconfig/kbuild的秘密

源代码根目录下的 vmlinux 被剥离、压缩后,放入 piggy.S,然后与其他对等对象链接到 arch/x86/boot/compressed/vmlinux。同时,在 arch/x86/boot 下生成一个名为 setup.bin 的文件。可能有一个可选的第三个文件,它带有重定位信息,具体取决于 CONFIG_X86_NEED_RELOCS 的配置。

由内核提供的称为 build 的宿主程序将这两个(或三个)部分构建到最终的 bzImage 文件中。

依赖跟踪

kbuild 跟踪三种依赖关系:

  1. 所有必备文件(*.c*.h
  2. 所有必备文件中使用的 CONFIG_ 选项
  3. 用于编译该目标的命令行依赖项

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读