如何解决缺少 MAP_HUGE_1GB 和 MAP_HUGE_2MB?
我使用的是 CentOS 7,内核版本为 3.10.0-1160.15.2.el7.x86_64。
当我尝试使用 MAP_HUGE_1GB
和 MAP_HUGE_2MB
标志时,g++-9.3.1 抱怨:
error: ‘MAP_HUGE_1GB’ was not declared in this scope; did you mean ‘MAP_HUGETLB’?
然后,我找到了这个post,答案提示我需要在#define _GNU_SOURCE
之前“#include <sys/mman.h>
,因为这是一个非标准标志”。
然而,定义 _GNU_SOURCE
会导致 warning: "_GNU_SOURCE" redefined
但 g++ 仍然抱怨没有声明这两个标志。
然后,我发现了这个 post,它表明使用了定义为 _GNU_SOURCE
的 libstdc++
。
现在,我很困惑如何使用 MAP_HUGE_1GB
和 MAP_HUGE_2MB
标志。
谢谢!
解决方法
Glibc 没有在其任何头文件中定义 MAP_HUGE_1GB
或 MAP_HUGE_2MB
。如果您安装了 kernel-headers
软件包,则可以通过执行 #include <linux/mman.h>
来获取这些常量。不过,这并不是很理想,所以我不确定为什么 glibc 没有为您提供更好的获取方式。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。