_GNU_SOURCE 가 무엇입니까?

oliverlee의 이미지

대소문자를 구별하지 않고 문장을 비교하는 strcasestr 함수를 이용하고자 합니다.
리눅스(CentOS)에서 컴파일을 하는데
"implicit declaration of function" 이라는 에러 메시지가 뜸니다.

그래서 gcc 옵션에 -D _GNU_SOURCE 를 추가하니 잘 동작하네요

이때 "_GNU_SOURCE" 가 뭔지 궁금합니다.
괜히 이것을 넣어서 컴파일하면 다른 정상적으로 작동하던 것들이 잘 못 동작하거나 그러지 않는지 걱정되네요

rookey94의 이미지

발생하신 문제가 strcasestr함수 때문이 맞는지요??

#include
#include

int main (int argc, char *argv [])
{

char* str1 = "test message.....";
char* str2 = NULL;

str2 = (char*) strcasestr(str1, "ME");
if (str2 != NULL)
printf("Find[%s]\n", str2);

return 1;
}

gcc -g -o xx xxx.c
Find[message.....]

cat /etc/issue
CentOS release 4.9 (Final)

gcc -g -o xx xxx.c
Find[message.....]

cat /etc/issue
CentOS release 6.4 (Final)

oliverlee의 이미지

먼저 답변 감사합니다.

그런데 제 질문은 _GNU_SOURCE 가 무엇이냐는 것입니다

strcasestr 함수를 사용하는데 문제가 생겨서
gcc 옵션에 -d _GNU_SOURCE 를 넣어서 컴파일을 하니깐 문제는 해결되었는데,

혹시 이 옵션으로 인해 어떤 문제가 야기되는지 궁금해서 질문을 올렸습니다.

rookey94의 이미지

아래분이 좋은 답글을 달아주셨네요.^^

질문하시는 의도는 이해 했습니다.

문제가 생긴 원인에 대해서 잘못 생각하시는거
아닌지 해서 확인차 말씀드린겁니다.

조금이라도 도움이 되시길 바라겠습니다.
수고하세요^^;

madman93의 이미지

---------------------------------------------
git init
git add .
git commit -am "project init"
---------------------------------------------