致命错误:hugetlbfs.h:没有这样的文件或目录

时间:2019-12-12 02:14:21

标签: linux huge-pages

我正在尝试使用gethugepagesize()函数来查找巨大页面尺寸的值。我发现必须包含hugetlbfs.h库。当我包含头文件时,出现编译错误:

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

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

undefined reference to `gethugepagesize'

我浏览了How to get the value of huge page size?个帖子。我无法获得该帖子的解决方案。

我想念什么吗?

2 个答案:

答案 0 :(得分:1)

  

我收到链接器错误,因为“未定义对'gethugepagesize'的引用”。我错过了什么吗?

根据dnf libhugetlbfs 是Fedora 31提供的 not

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

您似乎可能需要从其Fedora的存储库中下载 libhugetlbfs 。旧仓库位于Sourceforge。新的仓库位于GitHub | libhugetlbfs

根据apt-file libhugetlbfs 由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和项目的HOWTO


  

我正在尝试使用gethugepagesize()函数来查找巨大页面尺寸的值...

根据我对手册页的阅读,看来 libhugetlbfs 是虚拟文件系统的一部分。它可能无法执行您的想法(如果您在考虑large page sizes on x86 cpu's)。但由于我从未使用过该库,所以我可能是错的。

答案 1 :(得分:0)

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

rpm -qa | grep -i巨大

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

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

sudo yum install libhugetlbfs- 开发 -2.20-8.fc29.x86_64