当前位置: 技术问答>linux和unix
about #include<linux/fs.h>
来源: 互联网 发布时间:2015-11-16
本文导语: 写了最简单的内核模块,包含此语句#include 发现/usr/src/linux-2.4.20-8/include/linux/fs.h /usr/include/fs.h 都有此文件,到底是包含哪个fs.h 另外,在gcc下使用#pragma message(),在终端看不到输出的消息。 ...
写了最简单的内核模块,包含此语句#include
发现/usr/src/linux-2.4.20-8/include/linux/fs.h
/usr/include/fs.h
都有此文件,到底是包含哪个fs.h
另外,在gcc下使用#pragma message(),在终端看不到输出的消息。
发现/usr/src/linux-2.4.20-8/include/linux/fs.h
/usr/include/fs.h
都有此文件,到底是包含哪个fs.h
另外,在gcc下使用#pragma message(),在终端看不到输出的消息。
|
命令行用-I指定。
想看是哪个,用gcc -E预处理就知道了。
想看是哪个,用gcc -E预处理就知道了。
|
呵呵,一个是用户态下的搜索路径,一个是内核模块需要的头文件搜索路径,用的地方都不一样
如果你没有在编译时显示地加上-I的情况下:
如果你的代码中没有__KERNEL__这样的宏声明,那么编译时就会使用C库的头文件
如果你的代码是用于内核模块的,那么它指向的就是内核头文件,一般说来,在你的/usr/src/下还有一个链接符号,符号名为linux,它指向了linux-2.4.20-8这个目录,这是编译器在编译内核模块时使用的路径,编译器是通过__KERNEL__这个宏来识别你是需要内核中的结构体/函数或者是使用C库中的各种函数与结构体等
如果你没有在编译时显示地加上-I的情况下:
如果你的代码中没有__KERNEL__这样的宏声明,那么编译时就会使用C库的头文件
如果你的代码是用于内核模块的,那么它指向的就是内核头文件,一般说来,在你的/usr/src/下还有一个链接符号,符号名为linux,它指向了linux-2.4.20-8这个目录,这是编译器在编译内核模块时使用的路径,编译器是通过__KERNEL__这个宏来识别你是需要内核中的结构体/函数或者是使用C库中的各种函数与结构体等