2016-04-18 50 views
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()?

+0

是的,顯然。 – Boiethios

+2

我想你也可以用'-std = gnu99'來調用gcc。 – EOF

+0

@EOF這是正確的答案。現在起作用了。你應該讓它成爲答案,我會鼓勵它。 –

回答

1

您需要使用

-std=gnu99 

如果EOF增加了一個答案,我會刪除這個和他給予好評。