차이점: 1. 정적 링크는 실행 프로그램이 형성되기 전에 수행되는 반면 동적 링크는 프로그램이 실행될 때 수행됩니다. 2. 정적 링크 라이브러리의 코드 로딩 속도가 빠르며 실행 속도도 약간 빠릅니다. 3. 동적 링크에 비해 정적 링크로 생성된 실행 파일이 더 큽니다.
이 튜토리얼의 운영 환경: linux5.9.8 시스템, Dell G3 컴퓨터.
Linux의 동적 링크 및 정적 링크
컴파일 및 링크 과정
컴파일은 3단계로 나누어집니다. 먼저, 이 프로세스는 주로 #으로 정의된 일부 명령이나 명령문을 처리합니다. .(예: 매크로, #include, 미리 컴파일된 명령어 #ifdef 등) *.i 파일을 생성한 후 컴파일합니다. 이 프로세스는 주로 어휘 분석, 구문 분석 및 의미 분석 등을 수행하여 *.s 어셈블리 파일을 생성합니다. 마지막으로 어셈블리를 수행합니다. 이 프로세스는 상대적으로 간단합니다. 이는 해당 어셈블리 명령을 기계 명령으로 변환하고 재배치 가능한 이진 개체 파일을 생성하는 것입니다.
링크하는 두 가지 방법
정적 링크
동적 링크
정적 링크와 동적 링크의 가장 큰 차이점은 링크가 형성되는 시점이 이전에 형성된다는 점입니다. 실행 가능한 프로그램에서는 프로그램이 실행될 때 동적 연결이 발생합니다.
정적 링크 라이브러리의 장점
a): 코드 로딩 속도가 빠르고, 동적 링크 라이브러리보다 실행 속도가 약간 빠릅니다.
b): 올바른 . lib 파일을 개발 컴퓨터에 저장한 후 프로그램을 바이너리 형태로 배포할 때, 사용자 컴퓨터의 .lib 파일에 버전 문제가 있는지 고려할 필요가 없고 DLL 지옥과 같은 문제를 피할 수 있습니다.
동적 링크 라이브러리의 장점
a) 더 많은 메모리를 절약하고 페이지 교환을 줄입니다.
b) 출력 인터페이스가 변경되지 않는 한 DLL 파일은 EXE 파일과 독립적입니다.__ 즉, 이름, 매개변수, 반환 값 유형 및 호출 규칙 변경 없음__, DLL 파일을 교체해도 EXE 파일에 영향을 미치지 않으므로 유지 관리성과 확장성이 크게 향상됩니다.
c) 다른 프로그래밍 언어로 작성된 프로그램은 따르는 한 동일한 프로그램을 호출할 수 있습니다. 함수 호출 규칙 DLL 함수
d)는 대규모 소프트웨어 개발에 적합하여 개발 프로세스를 독립적이고 덜 결합되게 만들고 다양한 개발자와 개발 조직 간의 개발 및 테스트를 촉진합니다.
단점
a) 정적 링크를 사용하여 생성된 실행 파일은 크기가 더 크고 동일한 공통 코드를 포함하므로 낭비가 발생합니다.
b) 동적 링크 라이브러리를 사용하는 애플리케이션은 자체 완성되지 않으며 DLL 모듈에 의존합니다. 로드 시 동적 연결을 사용하고 프로그램 시작 시 DLL이 존재하지 않는 것으로 확인되면 시스템은 프로그램을 종료하고 오류 메시지를 표시합니다. 런타임 동적 연결을 사용하면 시스템이 종료되지 않지만 DLL에 내보낸 함수를 사용할 수 없으므로 속도가 정적 연결보다 느리기 때문에 프로그램이 로드되지 않습니다. 모듈이 업데이트될 때 새 모듈이 이전 모듈과 호환되지 않으면 모듈을 실행하는 데 필요한 모든 소프트웨어가 제거됩니다. 이는 초기 Windows에서는 일반적이었습니다.
관련 추천: "Linux 비디오 튜토리얼"
위 내용은 리눅스에서 동적 링크와 정적 링크의 차이점은 무엇입니까의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!