这是我的mman.h
文件,包含在/usr/include/sys/
:
http://pastebin.com/FZpHwKMC
不知何故, mmap()
似乎是被定义的(并且可以与标志0和读/写保护一起使用),但不是MAP_ANON
或 MAP_ANONYMOUS
,如下所示:
#include <sys/mman.h> int a = MAP_ANON; /* compile error */ int b = MAP_ANONYMOUS; /* also compile error */
我不知道可能是错的。 我正在编译使用这个makefile:
http://pastebin.com/R1V2edmf
编辑:原来, MAP_ANONYMOUS
macros定义在/usr/include/bits/mman.h
但只有 __USE_MISC
定义…
任何帮助将是了不起的!
如果您使用GCC,出现这种情况的一个常见原因是您没有使用GNU C标准。 尝试编译,例如, -std=gnu11
,看看是否解决了这个问题。
有关GCC的语言标准的更多信息可以在这里找到。
海湾合作委员会也提供了一个非常详尽的清单,确切地说他们在这里提供的扩展。
此外,作为一个方面说明,最好使用MAP_ANONYMOUS
而不是MAP_ANON
,因为后者已被弃用(根据man mmap
)。