$ gcc -c filename.c
컴파일에 성공하면 확장자가 .o인 obj파일 (filename.o)이 생성된다.
$ ar rcs libfile.a filename.o
라이브러리 작성에 사용하는 명령어는 ar
이다.
위와 같이
<ar 옵션> <생성하고자 하는 라이브러리의 이름> <오브젝트 파일들의 이름>
을 나열한후 실행한다.
윈도우에서 라이브러리 파일의 확장자는 .lib이지만 리눅스에서는 .a 확장자를 지닌다.
r
: 지정한 아카이브로 모듈(obj파일) 추가. 새로운 obj파일이면 추가, 기존 파일이면 치환.
c
: 아카이브 (라이브러리 파일) 생성.
s
: 아카이브 인덱스를 생성.
아카이브 인덱스를 생성하지 않으면 링크 속도가 느려지고, 시스템 환경에 따라서는 에러가 발생.
아카이브 인덱스는 nm -s로 조회할 수 있다.
v
: verbose mode(동작 내용 출력). 파일 크기나 갱신 시각 등 자세한 정보도 출력.
d
: 아카이브 모듈을 삭제. 삭제할 파일이 없다면 아카이브를 건들지 않음.
ar 명령은 정적 라이브러리를 생성할 때뿐만 아니라, 정적 라이브러리의 기능을 부분적으로 변경하고자 할 경우에도 사용할 수 있다.
라이브러리가 모두 오픈 소스로 구성되어 있지 않은 이유 등으로 정적 라이브러리를 처음부터 다시 작성할 수 없는 경우에 편리하게 이용될 수 있다.