>> Delete Reply from No. 38457 article
No. RE: 구조는 대략 이렇습니다.

등록 2001-12-31 12:11:00 By localhost     조회 1
이름 ^^    

		헤더 파일의 내용은 실제 어떤 라이브러리를 링크하느냐
와는 직접적인 관계가 없습니다. 그저 컴파일 단계에서
필요한 정보를 얻기 위해 include하는 것뿐입니다. 실제
라이브러리를 링크하려면 -l 옵션으로 지정해주어야 합
니다. 단, 링커를 직접 이용하지 않고, gcc를 통해 링커를
불러서 쓸 경우, -lc는 자동으로 붙게 되어 있습니다. 즉,
stdio 등이 정의된 libc는 자동으로 링크됩니다. 반면에
math library를 위한 -lm 옵션은 직접 명시하지 않으면
링크되지 않습니다.
 그리고, 윈도우에서 알아서 잘 되는건 링크 옵션 어딘가에
math library를 포함시키도록 되어 있기 때문이겠지요.
이건, 리눅스에서만 까다로운게 아니고 원래 C의 방식입니다.
    : 구조는 대략 이렇습니다.
:
: #include <stdio.h>
: #include <math.h>
:        .
:        .
:        .
:
: void main(void)
: {
:     int x, y, z;
:     .
:     .
:     .
:
:     x = sin(...);
:     .
:     .
:     .
:
:     y = asin(...);
:     .
:     .
:     .
:
:     z = cos(...);
:     .
:     .
:     .
: }
:
:     .
:     .
:     .
:
:
: 다는 아니지만 대략 이렇게 생겼거든요.
:
: 그리고 gcc를 이용해 컴파일 하면...
:
: stdio.h는 되는데 math.h는 왜 안되는지...
:
: stdio.h가 되면 math.h도 되야 하는거 아닌가요?
:
: 그래서 <stdio.h> 대신에 "/usr/include/math.h"이렇게 절대 경로를 지정해 봤는데도 안되네요.
:
: 윈도우에서는 저렇게만 해도 알아서 잘 되던데...
:
:
:
: : : 원래 math.h는 표준 헤더 파일이 아닌가요?
: : :
: : : /usr/include/를 살펴보면 math.h가 있던데 sin(), cos()을 사용할 수가 없습니다.
: : :
: : : 지금은 잘 생각이 나지 않지만 컴파일 해보면 undefined reference라고 출력되던데...
: : :
: : : 도대체 왜이럴까요?
: :
: : 컴파일시 -lm 옵션을 붙혀야 할것 같습니다.
: : math 라이브러리를 써야거든요..
[관리자] 패스워드를 입력 하십시오. 답장이 존재하면 함께 삭제됩니다.[ 목록 | 이전 ]
패스워드:    

Copyleft 1999-2026 by JSBoard Open Project
Theme Designed by IDOO All right reserved