2012-05-08 5 views
0

저는 C/C++을 처음 접했고 간단한 질문이 있습니다. 내가 컴파일 명령을 입력 할 때 라이브러리를 링크해야 할 때 나는 모른다. 만약 내가 옳다면, -l 뒤에 내가 포함시키고 자하는 라이브러리의 이름을 추가 할 것이다. 그러나 예를 들어 C의 수학 라이브러리에서 작업하고 있다면 프로그램을 컴파일하기 위해 -lath와 같은 것을 추가해야합니까? 아니면 내가 어딘가에서 읽을 때 C 외부 라이브러리를 사용할 때만 필요합니까? C 외부 라이브러리 란 무엇입니까? 아무도 나에게 이것을 설명 할 수 있을까? 고맙습니다.언제 C 언어로 라이브러리를 링크해야합니까?

답변

4

대부분의 컴파일러는 링크시 기본적으로 언어의 표준 라이브러리를 포함합니다. gcc는 C 표준 라이브러리 (libc)를 포함하고 g ++는 C++ 표준 라이브러리 (libC++)를 추가합니다. 일부 시스템에서는 수학에 -lm을 추가하거나 실시간 확장을 위해 -lrt을 추가 할 수 있지만 이러한 라이브러리는 종종 핵심 언어 이외의 기능을 추가합니다 (일반적으로 자주 사용되는 기능 임).

1

수학은 표준 라이브러리의 일부이므로 링크 할 필요가 없습니다. 다른 모든 것은 연결되어야합니다. (편집 : 항상 사실은 아닙니다 - 아래의 설명을 확인하십시오)

예를 들어, printf, strcmp 및 pthread_create 코드에서 사용하는 경우 printf 및 strcmp에 대해 아무 것도 연결할 필요가 없습니다. 올바른 헤더를 포함하면 괜찮습니다. 그러나 pthread_create는 표준 라이브러리의 일부가 아니므로 --lpthread에 링크해야합니다.

+4

때때로 표준 수학 함수를 사용하려면 수학 라이브러리와 연결해야합니다. –

+0

알겠습니다. 맞아요. math.h의 함수에 대해 이야기하고 있다고 가정했는데, 표준 라이브러리의 일부인 것으로 알고 있습니다. –

+0

Solaris에서 (예를 들어) math.h 함수는 libm에서 명시 적으로 링크해야합니다. – Joe

관련 문제