Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

16.4. GCC에서 정적 라이브러리 사용

정적 라이브러리는 오브젝트 파일을 포함하는 아카이브로 사용할 수 있습니다. 연결한 후 결과 실행 파일의 일부가 됩니다.

참고

Red Hat은 다양한 이유로 정적 연결 사용을 권장하지 않습니다. 16.2절. “정적 및 동적 연결”을 참조하십시오. 특히 Red Hat에서 제공하는 라이브러리에 대해 필요할 때만 정적 링크를 사용합니다.

사전 요구 사항

참고

Red Hat Enterprise Linux의 일부인 대부분의 라이브러리는 동적 연결에만 지원됩니다. 아래 단계는 동적 연결에 사용할 수 없는 라이브러리에서만 작동합니다. 16.6절. “GCC에서 정적 및 동적 library 사용”을 참조하십시오.

절차

소스 및 개체 파일의 프로그램을 연결하려면 정적으로 링크된 라이브러리 foo 를 추가합니다. libfoo.a:

  1. 코드가 포함된 디렉터리로 변경합니다.
  2. foo 라이브러리의 헤더를 사용하여 프로그램 소스 파일을 컴파일합니다.

    $ gcc ... -Iheader_path -c ...

    header_pathfoo 라이브러리의 헤더 파일이 포함된 디렉터리의 경로로 바꿉니다.

  3. foo 라이브러리와 프로그램을 연결합니다.

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

    library_pathlibfoo.a 파일이 포함된 디렉터리의 경로로 바꿉니다.

  4. 프로그램을 실행하려면 다음을 실행합니다.

    $ ./program
경고

정적 링크와 관련된 -static GCC 옵션은 모든 동적 연결을 금지합니다. 대신 -Wl,-Bstatic-Wl,-Bdynamic 옵션을 사용하여 링커 동작을 보다 정확하게 제어합니다. 16.6절. “GCC에서 정적 및 동적 library 사용”을 참조하십시오.