gpt4 book ai didi

linux - stdarg.h No such file or directory while compiling out-of-tree Linux kernel module 如何解决?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:14:45 27 4
gpt4 key购买 nike

我有一个 out-of-tree Linux 内核模块需要编译。当我在内核模块目录中执行“make”时,我得到:

“ fatal error :stdarg.h:没有那个文件或目录”

在开始构建之前,我根据我的 Linux 发行版安装了头文件。

$sudo apt-get install kernel-headers-$(uname -r)

如何解决这个编译错误? (我的发行版是带有 linux-headers-4.15.0-42-generic 的 Ubuntu 16.04)

最佳答案

我使用“locate”命令搜索了 stdarg.h 以查看我是否可以在系统上运行该文件。

我得到了:

/usr/include/c++/5/tr1/stdarg.h

/usr/lib/gcc/i686-linux-gnu/5/include/cross-stdarg.h

/usr/lib/gcc/i686-linux-gnu/5/include/stdarg.h

...

它告诉我编译器至少提供了一个 stdarg.h。

我试图在内核模块 Makefile 中包含路径“/usr/lib/gcc/i686-linux-gnu/5/include”,以便可以获取 stdarg.h。它没有工作(在构建时,官方内核头文件中对 stdarg.h 的另一个引用没有被解析)。

我终于在下面直接创建了一个符号链接(symbolic link):/usr/src/linux-headers-4.15.0-42-generic/include

$sudo ln -s/usr/lib/gcc/i686-linux-gnu/5/include/stdarg.h stdarg.h

这足以解决编译问题。

我想知道内核头文件是否应该默认带有 stdarg.h 的实现(这是我第一次遇到这个问题)。我还读到编译器提供了一种实现,大多数时候最好使用编译器版本。

更新说明:如果上述方案仍不能解决问题:

在再次运行 make 之前,执行 make clean。在文件夹中执行 ls -la 并查找“.cache.mk”文件。如果它仍然存在,请将其删除并再次运行“make”。它应该可以解决问题。

关于linux - stdarg.h No such file or directory while compiling out-of-tree Linux kernel module 如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54480765/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com