首页 > 解决方案 > 在 C 程序中包含 ext4.h

问题描述

我正在尝试创建一个可以读取 ext4 文件系统的小程序,为此我需要使用ext4.h文件中定义的所有结构。
问题是,该文件包含一组内核头文件,例如

#include <linux/blkdev.h>
#include <linux/magic.h>
#include <linux/jbd2.h>
#include <linux/quota.h>
#include <linux/rwsem.h>
#include <linux/rbtree.h>
#include <linux/seqlock.h>
#include <linux/mutex.h>
#include <linux/timer.h>
#include <linux/version.h>
... and more

我使用以下方法安装了内核头文件:

$ apt search linux-headers-$(uname -r)

所以现在我把它们/usr/src/linux-headers-5.4.../include放进去,我尝试用它来编译我的程序,-I /path/to/kernel-headers但现在似乎这些头文件中包含一些头文件,它无法找到,比如asm/current.h我的文件系统中的哪个是asm-generic/current.h

做过这样的事情的人可以帮助我吗?

标签: cheaderkernel

解决方案


我建议你看看e2fsprogs。这是用于操作 ext2/3/4 文件系统的用户空间工具集,它包含您可以适应的文件系统的用户空间实现。


推荐阅读