정적 라이브러리 예제

정적 라이브러리는 나중에 다른 개체와 결합되어 최종 실행 파일을 형성하는 개체 파일입니다. 동적 라이브러리 (또는 공유 라이브러리)라는 라이브러리의 다른 유형이 있지만 나중에 더 자세한 내용은 정적 라이브러리에 대해 자세히 설명합니다. 또는 (libclass.a가 /usr/local/lib와 같이 표준 라이브러리 경로에 배치된 경우) 라이브러리를 동적으로 연결하는 대신 실행 수와 정적으로 연결하는 몇 가지 장점이 있습니다. 가장 큰 장점은 응용 프로그램이 모든 라이브러리가 있고 올바른 버전임을 확신할 수 있다는 것입니다. 이렇게 하면 DLL 지옥 또는 더 일반적으로 종속성 지옥으로 구어체로 알려진 종속성 문제를 방지할 수 있습니다. 정적 연결을 사용하면 응용 프로그램을 단일 실행 파일에 포함할 수 있어 배포 및 설치가 간소화됩니다. 이 단계별 연습에서는 C++ 앱에 사용할 정적 라이브러리(.lib 파일)를 만드는 방법을 보여 주며 이 단계를 보여 주시면 됩니다. 정적 라이브러리를 사용하면 코드를 다시 사용할 수 있습니다. 기능이 필요한 모든 앱에서 동일한 루틴을 다시 구현하는 대신 정적 라이브러리에 한 번 작성한 다음 앱에서 참조합니다. 정적 라이브러리에서 연결된 코드는 앱의 일부가 되며 코드를 사용하기 위해 다른 파일을 설치할 필요가 없습니다. 정적 라이브러리에서 링커에는 소스 코드가 사용하는 라이브러리 함수의 개체 코드가 포함됩니다. 즉, 소스 코드에서 mylib.a라는 정적 라이브러리를 만든 다음 mylib.a에 정의된 다섯 개의 함수를 호출하면 해당 함수의 구현이 개체 코드로 변환된 다음 링커에 의해 최종 실행 파일로 포함됩니다. .

5. 이제 정적 라이브러리를 사용할 준비가 되었습니다. 이 시점에서 우리는 단지 그것을 사용하는 다른 곳에서 lib_mylib.a를 복사 할 수 있습니다. 데모를 위해 현재 디렉터리에 라이브러리를 보관해 보겠습니다. GCC를 사용하여 정적 라이브러리를 만들려면 라이브러리 코드를 개체 파일로 컴파일해야 하므로 GCC에 -c를 사용하여 이 작업을 수행하도록 지시해야 합니다. 따라서 동적 라이브러리의 위치를 환경 LD_LIBRARY_PATH에 추가해야 합니다. 다음으로 정적 라이브러리를 만들고 파일을 추가해야 합니다. 정적 라이브러리를 만드는 단계는 UNIX 또는 UNIX에서 정적 라이브러리를 만들고 OS와 같은 UNIX를 사용하도록 하는 명령으로 이 작업을 수행할 수 있습니다. 1. 라이브러리에 함수가 포함된 C 파일을 만듭니다.

4. 정적 라이브러리를 만듭니다. 이 단계는 하나의 정적 라이브러리에 여러 개체 파일을 번들로 묶는 것입니다(자세한 내용은 ar 참조). 이 단계의 출력은 정적 라이브러리입니다. 로드된 공유 라이브러리에 대한 핸들이 있는 후에는 함수와 변수 모두의 기호를 찾을 수 있습니다. 우리는 그들의 유형을 제대로 정의해야 하며, 실수를 하지 않았는지 확인해야 합니다.