我正在使用 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
如果 EOF 添加了一个答案,我会删除这个并给他投票。
关于c - 如何在 gcc 中使用 brk()/sbrk(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36701761/