16.5. GCC에서 동적 라이브러리 사용


동적 라이브러리는 연결 시간과 런타임 모두에 필요한 독립 실행형 실행 파일로 사용할 수 있습니다. 애플리케이션의 실행 파일과는 별개로 유지됩니다.

사전 요구 사항

  • GCC가 시스템에 설치되어 있습니다.
  • 유효한 프로그램을 구성하는 소스 또는 개체 파일 세트로, 일부 동적 라이브러리 foo 및 다른 라이브러리가 없습니다.
  • libfoo.so파일로 사용 가능한 foo 라이브러리

프로그램 Against a Dynamic Library

동적 라이브러리 foo 에 대해 프로그램을 연결하려면 다음을 수행합니다.

$ gcc ... -Llibrary_path -lfoo ...

프로그램이 동적 라이브러리와 연결되어 있는 경우 결과 프로그램은 항상 런타임에 라이브러리를 로드해야 합니다. 라이브러리를 찾는 데는 두 가지 옵션이 있습니다.

  • 실행 파일 자체에 저장된 rpath 값 사용
  • 런타임 시 LD_LIBRARY_PATH 변수 사용

실행 가능한 파일에 rpath Value Stored 사용

rpath 는 연결될 때 실행 파일의 일부로 저장되는 특수 값입니다. 나중에 프로그램이 실행 파일에서 로드되면 런타임 링커는 rpath 값을 사용하여 라이브러리 파일을 찾습니다.

GCC 와 연결하는 동안 path library_pathrpath 로 저장합니다.

$ gcc ... -Llibrary_path -lfoo -Wl,-rpath=library_path ...

경로 library_pathlibfoo.so 파일이 포함된 디렉터리를 가리켜야 합니다.

경고

-Wl,-rpath= 옵션 뒤에는 공백이 없습니다.

나중에 프로그램을 실행하려면 다음을 실행합니다.

$ ./program

LD_LIBRARY_PATH 환경 변수 사용

프로그램의 실행 파일에 rpath 를 찾을 수 없는 경우 런타임 링커는 LD_LIBRARY_PATH 환경 변수를 사용합니다. 이 변수의 값은 공유 라이브러리 오브젝트가 있는 경로에 따라 각 프로그램에 대해 변경해야 합니다.

library_path 에 있는 라이브러리를 사용하여 rpath 가 설정되지 않은 프로그램을 실행하려면 다음을 실행합니다.

$ export LD_LIBRARY_PATH=library_path:$LD_LIBRARY_PATH
$ ./program

rpath 값을 제외하면 유연성이 제공되지만, 프로그램을 실행할 때마다 LD_LIBRARY_PATH 변수를 설정해야 합니다.

라이브러리를 기본 디렉터리에 배치

런타임 링커 구성은 여러 디렉터리를 동적 라이브러리 파일의 기본 위치로 지정합니다. 이러한 기본 동작을 사용하려면 라이브러리를 적절한 디렉터리에 복사합니다.

동적 링커 동작에 대한 자세한 설명은 이 문서의 범위를 벗어납니다. 자세한 내용은 다음 리소스를 참조하십시오.

  • 동적 링커의 Linux 도움말 페이지:

    $ man ld.so
  • /etc/ld.so.conf 설정 파일의 내용:

    $ cat /etc/ld.so.conf
  • 디렉터리가 포함된 추가 구성없이 동적 링커에서 인식하는 라이브러리의 보고:

    $ ldconfig -v
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.