2016-04-18 7 views
1

brk(2)を使用してmalloc()の独自の調査実装を作成しています。しかし、私はLinuxのミント17.2上のgcc 4.8.4を使用してコードをコンパイルしようとすると:私はgccでbrk()/ sbrk()を使用する方法

zalloc.c:30:2: error: implicit declaration of function ‘sbrk’ [-Werror=implicit-function-declaration] 

gcc -g -O0 -std=c99 -Wall -Werror -pedantic zalloc.c -c -o zalloc.o 

私はエラー「機能BRKの暗黙的な宣言」を持っています既に使用中です

#include <unistd.h> 

brk()を使用するファイルにあります。

特定のライブラリを-lまたは-Lにリンクする必要がありますか?

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を使用するためにこれらのマクロのいずれかを定義することが必要である):man brkでは、glibc向けのFeature Test Macro requirementsに不可解な言及はありますか?

+0

はい、明らかです。 – Boiethios

+2

また、 '-std = gnu99'でgccを起動することもできます。 – EOF

+0

@EOFこれは正しい答えです。今すぐ動作します。あなたはそれを答えにして、私はそれをアップヴォートするでしょう。 –

答えて

1

あなたは、EOFは、私はこの1つを削除し、彼をupvoteだろう答えを追加した場合

-std=gnu99 

を使用する必要があります。

関連する問題