1
我正在使用brk(2)
編寫我自己的研究實現malloc()
。然而,當我嘗試編譯的Linux Mint的17.2用gcc 4.8.4代碼:如何使用brk()/ sbrk()和gcc
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
,有一個神祕的參考Feature Test Macro requirements
爲glibc的:
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()?
是的,顯然。 – Boiethios
我想你也可以用'-std = gnu99'來調用gcc。 – EOF
@EOF這是正確的答案。現在起作用了。你應該讓它成爲答案,我會鼓勵它。 –