A: 在linux中包含头文件时,有不少类似如下的写法:#include <asm/types.h>,但在linux kernle的include文件夹下并没有这个文件夹,倒是有不少以asm打头的文件夹,如:asm_powerpc、asm_ppc等。
B: #include <asm/types.h>,是由Makefile根据.config 内核配置自动生成的,而用make menuconfig 可以生成.config. 用make mrproper 可以清除.config和自动生成的源文件。
A: 这个asm是这些asm打头的文件夹的统称吗?
B:不是,是不同的硬件平台的汇编文件,汇编语言是AT&T 汇编。
asm是一个符号连接
只有在你的主makefile的ARCH 变量赋值,并且编译过一遍内核之后才会指向对应的体系结构
这个文件夹下的东西是体系结构相关的
如/include/asm-arm/
/include/asm-x86/
只有在你的主makefile的ARCH 变量赋值,并且编译过一遍内核之后才会指向对应的体系结构
这个文件夹下的东西是体系结构相关的
如/include/asm-arm/
/include/asm-x86/
A: 也就是说,源代码中没有asm这个文件夹。在编译内核的时候会根据ARCH的配置,使用具体的某个架构的文件,如:asm_arm或asm_x86中的文件,临时的生成这个文件夹及其下的文件。
B: 不用临时生成,那些文件夹如/include/asm-x86/早就存在
只是make的时候 /include/asm 指向 /include/asm-x86/
这样 #include <asm/types.h> == /include/asm-x86/types.h
只是make的时候 /include/asm 指向 /include/asm-x86/
这样 #include <asm/types.h> == /include/asm-x86/types.h
本文解释了Linux内核中的头文件包含机制,特别是对于#include<asm/types.h>这类语句的理解。通过说明Makefile如何根据内核配置自动生成对应体系结构的头文件路径,文章揭示了Linux内核在不同架构间保持代码兼容性的方法。
1857

被折叠的 条评论
为什么被折叠?



