0

我正在尝试使用这个 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

我收到"no such file or directory"第 2,4 和 6 行的错误,尽管它们/usr/src/kernels/3.10.14-100.fc18.x86_64/include/linux/与其他 4 行一样。

我之前(使用 Makefiles)(fedora 18)在这个系统上编译了一些其他包含内核头文件的程序,我确信例如它没有得到这样的错误dirent.hor proc_fs.h。我想也许我应该在 gcc 中使用一些其他选项,这些选项可能在那些 Makefile 中被考虑过!

kernel-headerfileskernel-devel安装了与我正在运行的内核相同版本的软件包。

4

1 回答 1

1

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

如果该程序实际上是一个内核模块,那么您需要使用 KBuild 来编译它,因为内核模块需要一个特殊的构建环境。请参阅:了解什么是 KBuild

也看看:

/usr/src/linux/Documentation/kbuild/modules.txt
于 2013-10-13T12:56:20.203 回答