컴파일시 뜨는 메세지좀 봐주세요.
글쓴이: vicolee / 작성시간: 화, 2006/12/12 - 9:20오후
#include
#include
main()
{
/* 3.4의 2.5 승 구하기 */
printf("%g\n", pow(3.4, 2.5));
/* 7.7의 제곱근 구하기 */
printf("%g\n", sqrt(7.7));
}
위는 프로그램 소스 인데요. 컴파일시 아래와 같은 메세지가 뜨네요.
/tmp/ccXgVrMi.o(.text+0x24): In function `main':
: undefined reference to `pow'
/tmp/ccXgVrMi.o(.text+0x42): In function `main':
: undefined reference to `sqrt'
collect2: ld returned 1 exit status
pow 나 sqrt 함수는 math.h에서 정의되있어서 include했는데요...
왜이런 현상이 일어나는지 모르겠습니다.
Forums:
라이브러리를 같이 링크하세요.
헤더 파일에는 함수 원형만 정의되어 있기 때문에
링크를 할 때 math 라이브러리를 같이 링크하셔야 합니다.
보통 방법은...
리눅스에서는
gcc -o xxx xxx.c -lm
뒤의 -lm 부분이 필요합니다.
다른 *NIX에서는 다를 수도 있습니다.
gcc 의 링크 옵션
링크 옵션에서 보면
-L 디렉토리
-l라이브러리명
이렇게 되있던데요...
그럼 -lm 에서 m 이 math 라이브러리명이 되는것인가요?
아마도...
standard library가 아님으로..
링크를 해주셔야하는 것으로 알고있습니다.. math 맞습니다...
그렇다면...
아아 libm.a 를 링크시켜 준것이군요...
그럼 sqrt 나 pow함수 등 standard library 에 포함되어 있지 않은 것들은
어떤 라이브러리에 포함되어 있는지 어떻게 알수가 있죠?
man serch 에도 안나오고...
매뉴얼을 읽는
매뉴얼을 읽는 습관을 들여주세요.
man sqrt:
man pow:
아아^^
그렇군요...감사합니다...^^
댓글 달기