The man page for mremap(2) says to include these header files: #include <unistd.h> #include <sys/mman.h> The flags argument can take the flag 'MREMAP_MAYMOVE' which is not defined in either of those files, but is in linux/mman.h. See mremap(2) and grep /usr/include/sys/mman.h for MREMAP_MAYMOVE
MREMAP_MAYMOVE is a GNU extension, so you need to -D_GNU_SOURCE to get it, otherwise it would break namespace of various standards. See info libc on Feature Set Macros.