c - 如何在c中为非内核应用程序指定内核头文件的路径?

标签 c gcc makefile header-files kernel-module

我需要转账fixp_t使用 <linux/fixp-arith.h> 从内核模块到客户端应用程序的键入数字(定义在 s16 ,最初是 ioctl ) .数据类型非常重要,如果变量大小不同 - 结果可能非常危险。

如果我包括 <linux/fixp-arith.h>在内核和客户端应用程序源代码中,客户端应用程序无法编译,因为它找不到 linux header 。

另一方面,gcc -I/usr/src/linux-headers-3.16.0-4-common/include/ app.c -o app不起作用,因为 <linux/types.h>重新定义现有类型,编译失败。

另一方面,我害怕自己指定任何数据类型,因为在每个拱门上 s16 ,等等 fixp_t可能不同。

如何解决这个问题?

最佳答案

来自 gcc 手册页:

-I dir Add the directory dir to the list of directories to be searched for header files.

因此,要添加您将使用的目录:

-I /usr/src/linux-headers-3.16.0-4-common/include/

但是,我认为用户空间程序不应该包含内核头文件。如果您的内核模块有一个用户空间 API,那么该 API 应该在一个与内核头文件分开的头文件中声明,并且只依赖于标准头文件。

关于c - 如何在c中为非内核应用程序指定内核头文件的路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35013118/

相关文章:

C 中的 Const 返回类型

c - 使用终端时出现意外标记 '(' 附近的语法错误

c - GCC:编译不同文件夹中的文件

c - 在 c makefile 中包含 sqlite3 lib

string - 如何使用 Sed 替换数据中的字节序列?

c - 我应该在 GlobalRealloc 之后释放全局内存吗?

c - 为什么 getaddrinfo() 在函数的输入部分返回一个值?

c++ - GCC针对以下情况的尾调用优化

c - GNU GCC 数学函数的精度要求?

c - 对 `pow' 的 undefined reference - makefile