我正在尝试使用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?个帖子。我无法获得该帖子的解决方案。
我想念什么吗?
答案 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