C程序虽然存在但找不到包含的头文件

时间:2013-10-13 11:21:33

标签: c linux gcc header-files

我正在尝试使用此gcc命令编译程序:

gcc -c -fomit-frame-pointer -O2 sth.c

包括这些头文件:

#include <linux/kernel.h>    //line 1
#include <linux/module.h>    //line 2
#include <sys/syscall.h>     //line 3
#include <linux/proc_fs.h>   //line 4
#include <linux/types.h>     //line 5
#include <linux/dirent.h>    //line 6
#include <asm/unistd.h>      //line 7

我在第2,4和6行遇到"no such file or directory"错误,但它们位于/usr/src/kernels/3.10.14-100.fc18.x86_64/include/linux/,就像其他4位一样。

我之前(使用Makefiles)(fedora 18)编译了一些其他程序,包括内核头文件,我确信例如它没有dirent.h或{{} {1}}。 我想也许我应该使用gcc的其他选项,可能在那些Makefile中被考虑过了!

我安装了运行内核的相同版本的

proc_fs.hkernel-headerfiles包。

1 个答案:

答案 0 :(得分:1)

用户空间内核头文件位于/usr/include/linux,而不是/usr/src/...。后一个路径包含用于内核模块的头,而不是用户空间程序。

如果程序问题实际上是一个内核模块,那么你需要使用KBuild来编译它,因为内核模块需要一个特殊的构建环境。请参阅:Understand what is KBuild

另请看一下:

/usr/src/linux/Documentation/kbuild/modules.txt