我正在尝试编译我的 led 包装函数程序文件,包括 linux/leds.h
使用包括内核空间头文件 gcc -I/usr/src/linux-headers-3.13.0-44-generic/include/example.c
通过编译它,许多头文件中的错误淹没了控制台,这些头文件依赖于 leds.h。谁能帮我编译这个在用户空间中使用内核空间头文件的 C 文件。
提前致谢。 :)
最佳答案
这行不通。
首先,不要在用户模式程序中使用内核模式 header ,内核编译后提供给用户空间的(已处理?)除外。内核模式 header 依赖于内核构建系统才能工作。
我试过这个,只是出于好奇,虽然我已经知道为什么它不起作用(tl;dr,我使用 Ubuntu 修补的 3.13.0-24 内核):
$ cd /usr/src/linux-headers-3.13.0-24/
$ echo '#include <linux/leds.h>' | gcc -E -x c -o - - -Iinclude
预处理器声称 <asm/linkage.h>
缺少,如果我错了,请纠正我,该 header 是由内核构建系统生成的。
如果需要,您可以通过创建一个使用 <linux/leds.h>
的内核模块来解决这个问题等,然后通过模块导出用户空间 API(通常通过 /proc
或 /sys
完成)并使用该 API 来实现用户模式代码的逻辑。
希望这对您有所帮助!
关于linux - 无法编译包含 <linux/leds.h> 的 C 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32137381/