C++ 동적 라이브러리와 정적 라이브러리의 차이점은 무엇입니까?

1. 생성방법

  1. 정적 라이브러리 생성
g++ -c add.cc -o add.o
g++ -c del.cc -o del.o
ar rcs libapi.a del.o add.o
g++ -static main.cc -o static main -L./ -lapi -l./
./static main
  1. 동적 라이브러리 생성
g++ -c add.cc -o add.o
g++ -c del.cc -o del.o
g++ -shared -fPIC -o libapi.so del.o add.o
g++ main.cc -o dynamic main -L./ -lapi -l./
export LD LIBRARY PATH=$LD LIBRARY PATH:/home/mark/interview/ccplus/lib
./dynamic main

2. 링크방법

  1. 정적 링크는
    정적 라이브러리를 대상 파일로 컴파일합니다.

  2. 동적 링크는
    라이브러리를 대상 파일로 컴파일하지 않습니다.
    실행 코드는 프로그램이 실행될 때 로드됩니다: 주소 독립적 코드 기술-fPIC, 로드 중 재배치는
    구문 검사만 수행합니다.

3. 우주점령

정적 라이브러리에는 여러 복사본(메모리 및 디스크)이 있습니다.

동적 라이브러리의 복사본은 하나만 있습니다.

4. 사용방법

정적 라이브러리가 있는 프로그램이 직접 실행됩니다.

동적 라이브러리가 있는 프로그램은 동적으로 로드됩니다. 참고: 프로그램 환경은 동적 라이브러리 검색 경로 LD LIBRARY PATH를 지정해야 합니다.

5. 실행 속도

정적 라이브러리는 빠르고 동적 라이브러리는 느립니다.

6. 라이브러리 파일 변경

인터페이스 변경: 모두 다시 컴파일해야 함

인터페이스 구현 변경: 정적 라이브러리는 다시 컴파일해야 하며 동적 라이브러리만 다시 컴파일하면 됩니다.


Lingsheng Academy 프로젝트 수업을 추천합니다. 개인적으로 선생님께서 잘 가르쳐주신 것 같습니다. 공유하고 싶습니다:
Lingsheng Platinum Learning Card(인프라/고성능 스토리지/golang 클라우드 네이티브/오디오 및 비디오/Linux 커널 포함)
https://xxetb.xet .tech/s/VsFMs

추천

출처blog.csdn.net/qq_40135848/article/details/132942874