在 Linux 启动过程中,最开始加载的程序就是 bootSect.S 文件.

其中第一行是一个include 语句:#include <asm/boot.h>
而当我去查看boot.h的时候,发现它的真正位置在 "include/asm-i386/boot.h" 而不是 "include/ asm/boot.h"

这让我很不解,查网上资料也没有解答, 打开makefile文件,仔细看了一下,终于找到原因:

在makefile 中有这么一段:

Linux启动(转)symlinks:
Linux启动(转)    rm 
-f include/asm
Linux启动(转)    ( cd include ; ln 
-sf asm-$(ARCH) asm)
Linux启动(转)    @if [ 
! -d include/linux/modules ]; then 
Linux启动(转)        mkdir include
/linux/modules; 
Linux启动(转)    fi

很明显,首先删除了 asm文件夹,然后 在include 下面做了一个软连接: ln -sf asm-$(ARCH)  asm

这里的ARCH明显是系统相关的环境变量了,比如在i386机器上就是代表i386了。这样asm-i386就转成了asm.

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-25
  • 2021-12-09
  • 2021-06-28
  • 2021-12-21
猜你喜欢
  • 2021-06-28
  • 2021-07-20
  • 2021-10-08
  • 2021-08-31
  • 2021-08-06
  • 2021-10-29
  • 2021-11-14
相关资源
相似解决方案