Fatal error: hugetlbfs.h: No such file or directory

Fatal error: hugetlbfs.h: No such file or directory

我正在尝试使用 gethugepagesize() 函数查找大页面大小的值。我发现必须包含 hugetlbfs.h 库。当我包含 header 时出现编译错误:

Fatal error: hugetlbfs.h: No such file or directory

当我跳过包含库文件并调用函数时,出现链接器错误

undefined reference to `gethugepagesize'

我翻阅了post How to get the value of huge page size?。我无法得到 post 工作的解决方案。

我是不是漏掉了什么?

I get linker error as "undefined reference to `gethugepagesize'" ... Am I missing something?

根据dnflibhugetlbfs 不是 由 Fedora 31 提供。

$ dnf provides 'hugetlbfs.h'
Error: No Matches found
$ dnf provides libhugetlbfs
Error: No Matches found

看来您可能需要从他们的 Fedora 存储库下载 libhugetlbfs。旧的回购协议在 Sourceforge。新仓库位于 GitHub | libhugetlbfs.

根据 apt-filelibhugetlbfs 由 Ubuntu 18 提供。对于 Ubuntu,头文件似乎是内核头文件的一部分。看起来该库是 Ubuntu.

libhugetlbfs-dev 包的一部分
$ apt-file find hugetlbfs.h
libhugetlbfs-dev: /usr/include/hugetlbfs.h
linux-headers-4.15.0-1050-oem: /usr/src/linux-headers-4.15.0-1050-oem/include/config/hugetlbfs.h
linux-headers-4.15.0-1059-oem: /usr/src/linux-headers-4.15.0-1059-oem/include/config/hugetlbfs.h
linux-headers-4.15.0-1065-oem: /usr/src/linux-headers-4.15.0-1065-oem/include/config/hugetlbfs.h
...

另见 gethugepagesizes(3) man page and the project's HOWTO


I'm trying to find value of huge page size using gethugepagesize() function ...

根据我对手册页的阅读,libhugetlbfs 似乎是虚拟文件系统的一部分。它可能不会按照您的想法进行(如果您正在考虑 large page sizes on x86 cpu's)。但我可能错了,因为我从未使用过该库。

尝试搜索已安装的 libhugetlbfs 的版本

rpm -qa | grep -i huge

libhugetlbfs-2.20-8.fc29.x86_64
libhugetlbfs-utils-2.20-8.fc29.x86_64

然后安装相同版本的libhugetlbfs开发库。

sudo yum install libhugetlbfs-devel-2.20-8.fc29.x86_64