linux - 无法编译包含 <linux/leds.h> 的 C 程序

标签 linux gcc compilation kernel

我正在尝试编译我的 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/

相关文章:

linux - 像传递文件一样传递 sed 输出

c - 有关 C 中 `({});` 的更多信息?

c - 文本伴侣 2 : errors when trying to compile and run a simple C program

compilation - http ://code. google.com/p/yaml-cpp/wiki/HowToParseADocument 上的完整示例 Yaml 程序无法编译

c# - C# 是否被视为上下文无关语言?

performance - 为什么这个版本的矩阵复制这么慢?

linux - 在 linux 中添加到 $PATH 以便守护进程可用

c++ - 共享库 (Linux) 中的调用函数出现段错误

python - 我无法自动运行脚本 (cron) Raspberry Pi

testing - 仅在 dejagnu 回归测试套件中运行 gcc 测试