我正在使用malloc()编写自己的brk(2)学习实现。但是,当我尝试在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/

10-11 02:37