如何包含来自其他目录的头文件(但不知道是哪一个)。

问题描述 投票:0回答:1

我正在尝试编译模块。我可以通过调用make来实现,make调用的是

make -C /lib/modules/$(shell uname -r)/build/ M=$(PWD) modules

但我想看到预处理后的输出,所以我试着手动用 cc -E file.c. 问题是,它不能看到头 <linux/init.h>:

fatal error: linux/init.h: No such file or directory
 #include <linux/init.h>

我注意到,当调用make的时候,它首先进入这个dir /usr/src/linux-headers-5.0.0-38-generic可能有头,但我不知道在哪里。我已经尝试过 gcc -E -I'/usr/src/linux-headers-5.0.0-38-generic file.c但还是一样的错误。那么,怎么可能包含内核头文件(这一点 <linux/init.h> is)在用户模式下--这就是如何从另一个目录中包含头文件?

PS: 按照 @uzsolt 在评论中的建议,我加入了 include 到路径的尽头。gcc -I /usr/src/linux-headers-5.0.0-38-generic/include. 但又少了另一个头- <asm/linkage.h>我不知道这个头在哪个目录下。

gcc makefile header-files
1个回答
0
投票

你应该使用 find 命令。find /usr/src/linux-headers-5.0.0-38-generic -name MISSED_FILE.

我不知道你的linux发行版,但我认为你应该把这些参数添加到 gcc:

-I/usr/src/linux-headers-5.0.0-38-generic/include -I/usr/src/linux-aws-headers-5.3.0-1003/arch/x86/include/
© www.soinside.com 2019 - 2024. All rights reserved.