我正在使用brk(2)
编写自己的malloc()
实现。但是,当我尝试在Linux Mint 17.2上使用gcc 4.8.4编译代码时:
gcc -g -O0 -std=c99 -Wall -Werror -pedantic zalloc.c -c -o zalloc.o
我遇到了“隐式声明函数brk”的错误:
zalloc.c:30:2: error: implicit declaration of function ‘sbrk’ [-Werror=implicit-function-declaration]
我已经在使用
#include <unistd.h>
在使用
brk()
的文件中。我应该用-l
还是-L
链接一个特定的库?在man brk
中,对于glibc有一个神秘的参考Feature Test Macro requirements
:
Since glibc 2.12:
_BSD_SOURCE || _SVID_SOURCE ||
(_XOPEN_SOURCE >= 500 ||
_XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED) &&
!(_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600)
Before glibc 2.12:
_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE >= 500 || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
需要定义其中一个宏才能使用brk()吗?
-std=gnu99
来调用gcc。 - EOF