17.4. GCC 및 ar를 사용하여 정적 library 생성
정적 링크를 위한 라이브러리를 생성할 수 있는 경우 오브젝트 파일을 특수 유형의 아카이브 파일로 변환할 수 있습니다.
Red Hat은 보안상의 이유로 정적 링크 사용을 권장하지 않습니다. 특히 Red Hat에서 제공하는 라이브러리에 대해 필요할 때만 정적 링크를 사용합니다. 16.2절. “정적 및 동적 연결”을 참조하십시오.
사전 요구 사항
- GCC 및 binutils가 시스템에 설치되어 있습니다.
- 정적 및 동적 링크의 이해
- 라이브러리로 공유할 함수가 있는 소스 파일
절차
GCC를 사용하여 중간 개체 파일을 만듭니다.
$ gcc -c source_file.c ...
필요한 경우 소스 파일을 더 추가합니다. 결과 오브젝트 파일은 파일 이름을 공유하지만
.o
파일 이름 확장자를 사용합니다.binutils
패키지의ar
툴을 사용하여 오브젝트 파일을 정적 라이브러리(아카이브)로 전환합니다.$ ar rcs libfoo.a source_file.o ...
libfoo.a
파일이 생성됩니다.nm
명령을 사용하여 결과 아카이브를 검사합니다.$ nm libfoo.a
- 정적 라이브러리 파일을 적절한 디렉터리에 복사합니다.
라이브러리를 연결할 때 GCC는 라이브러리가 정적 연결을 위한 아카이브인
.a
파일 이름 확장자에서 자동으로 인식됩니다.$ gcc ... -lfoo ...
추가 리소스
ar
툴을 위한 Linux 도움말 페이지:$ man ar