저는 C/C++을 처음 접했고 간단한 질문이 있습니다. 내가 컴파일 명령을 입력 할 때 라이브러리를 링크해야 할 때 나는 모른다. 만약 내가 옳다면, -l 뒤에 내가 포함시키고 자하는 라이브러리의 이름을 추가 할 것이다. 그러나 예를 들어 C의 수학 라이브러리에서 작업하고 있다면 프로그램을 컴파일하기 위해 -lath와 같은 것을 추가해야합니까? 아니면 내가 어딘가에서 읽을 때 C 외부 라이브러리를 사용할 때만 필요합니까? C 외부 라이브러리 란 무엇입니까? 아무도 나에게 이것을 설명 할 수 있을까? 고맙습니다.언제 C 언어로 라이브러리를 링크해야합니까?
0
A
답변
4
대부분의 컴파일러는 링크시 기본적으로 언어의 표준 라이브러리를 포함합니다. gcc는 C 표준 라이브러리 (libc)를 포함하고 g ++는 C++ 표준 라이브러리 (libC++)를 추가합니다. 일부 시스템에서는 수학에 -lm
을 추가하거나 실시간 확장을 위해 -lrt
을 추가 할 수 있지만 이러한 라이브러리는 종종 핵심 언어 이외의 기능을 추가합니다 (일반적으로 자주 사용되는 기능 임).
1
수학은 표준 라이브러리의 일부이므로 링크 할 필요가 없습니다. 다른 모든 것은 연결되어야합니다.
(편집 : 항상 사실은 아닙니다 - 아래의 설명을 확인하십시오)
예를 들어, printf, strcmp 및 pthread_create 코드에서 사용하는 경우 printf 및 strcmp에 대해 아무 것도 연결할 필요가 없습니다. 올바른 헤더를 포함하면 괜찮습니다. 그러나 pthread_create는 표준 라이브러리의 일부가 아니므로 --lpthread에 링크해야합니다.
관련 문제
- 1. linux에서 정적 C++ 라이브러리 빌드 - 다른 라이브러리에 링크해야합니까?
- 2. LLVM 라이브러리에 어떻게 링크해야합니까?
- 3. 언제 라이브러리를 만들 가치가 있습니까?
- 4. 여러 클래스 라이브러리를 언제 사용합니까?
- 5. C 언어로 실행 시간
- 6. C 언어로 변환하기
- 7. C 언어로 메모리 분할
- 8. 는 C 언어로
- 9. C 언어로 데이터 정렬
- 10. C# List는 언제 사용해야하며 언제 arraylist를 사용해야합니까?
- 11. C 언어로 포함 할 범용 헤더
- 12. QWebKit (11Mb)이 내 호스트 앱과 이미 링크되어있는 경우 공유 라이브러리를 링크해야합니까?
- 13. 내가 C++ 프로그래밍 언어로 읽을
- 14. 객관적인 C 언어로 가져 오기
- 15. C 언어로 구조의 요소 찾기
- 16. C 언어로 물고기처럼 수영하는 알고리즘 #
- 17. 나는 strcmp를 C 언어로 strugling하고있다.
- 18. C 언어로 파일에서 라인 삭제
- 19. C 언어로 여러 입력을받는 방법?
- 20. C 언어로 파일에서 문자열 검색
- 21. 스크립팅 언어로 C#을 파싱합니다.
- 22. C 언어로 된 파일 입출력
- 23. 가짜 등록기가 C 언어로 읽습니다.
- 24. 기능 언어로 C++ 0x (C++ 11)?
- 25. C 언어로 작성한 C 언어 코드
- 26. C++ baseconstructor는 언제 실행됩니까?
- 27. 라이브러리를 다른 언어로 번역하면 GPL/LGPL의 목적을위한 "파생물"이됩니까?
- 28. c/C++로 작성된 공유 라이브러리를 사용하는 Linux C 프로그램
- 29. D 언어로 리소스 확보
- 30. Visual Studio 2008 및 Windows Vista에서 C 프로그래밍 언어로 Allegro 라이브러리를 설치하는 방법은 무엇입니까?
때때로 표준 수학 함수를 사용하려면 수학 라이브러리와 연결해야합니다. –
알겠습니다. 맞아요. math.h의 함수에 대해 이야기하고 있다고 가정했는데, 표준 라이브러리의 일부인 것으로 알고 있습니다. –
Solaris에서 (예를 들어) math.h 함수는 libm에서 명시 적으로 링크해야합니다. – Joe