关于/usr/include/linux和/usr/src/linux/include/linux/

在linux系统中,/usr/存在include目录,而在内核源码/usr/src/linux版本号/目录下也存在include目录,那么这两个include目录分别在什么时候使用呢,在编写代码的时候,include  是在哪个include目录下呢

 

/usr/include/linux是用来编译当前系统的程序的;
/usr/src/linux/include/linux/是用来编译内核的,

要使用/usr/src/linux/include/linux的头文件,
可以用gcc -I /usr/src/linux-x.x.x/include/

呵呵,一个是用户态下的搜索路径,一个是内核模块需要的头文件搜索路径,用的地方都不一样
如果你没有在编译时显示地加上-I的情况下:
如果你的代码中没有__KERNEL__这样的宏声明,那么编译时就会使用C库的头文件
如果你的代码是用于内核模块的,那么它指向的就是内核头文件,一般说来,在你的/usr/src/下还有一个链接符号,符号名为linux,它指向了 linux-2.4.20-8这个目录,这是编译器在编译内核模块时使用的路径,编译器是通过__KERNEL__这个宏来识别你是需要内核中的结构体/ 函数或者是使用C库中的各种函数与结构体等

 

你可能感兴趣的:(linux)