오브젝트 파일들을 하나의 파일로 다룰 수 있도록 정리해 놓은 것.
프로그램을 작성할 때 소스파일들을 분류해서 작성하게 된다.
이때 다른 프로그램에서도 사용될 만한 여러 소스파일(모듈)들을 오브젝트 파일들로 만들어서 하나로 묶어낸 것을 라이브러리 파일 또는 아카이브 파일이라고 한다.
이렇게 라이브러리 파일을 만들어 놓으면 다른 프로그램에서 쉽게 해당 모듈을 사용할 수 있다.
$gcc -c file1.c file2.c
실행결과 file1.o
, file2.o
라는 오브젝트파일이 생성된다.
$ar rcs lib.a file1.c file2.c
ar
명령어는 오브젝트파일로 정적 라이브러리 파일을 생성하는 명령어이다.
ar명령어 구조는 아래와 같다.
<ar 옵션> <라이브러리 이름> <오브젝트파일들의 이름>
ar
은 archive의 약자로 뜻 그대로 기록(파일)을 라이브러리에 보관한다고 생각하면된다.TIP
.a
확장자 : 리눅스에서 사용하는 정적 라이브러리 파일
.lib
확장자 : 윈도우에서 사용하는 정적 라이브러리 파일
r
: 지정한 오브젝트 파일이 새로운 파일이면 추가, 기존파일이면 치환한다.
u
: 오브젝트 파일의 수정시간을 비교해서 새로운 파일일 경우에만 치환한다.
c
: 라이브러리(아카이브) 생성시 기본적으로 표준 에러를 기록하여 진단 메세지를 출력하는데 해당 출력을 제한한다.
s
: 아카이브 파일의 정보를 담는 인덱스를 생성한다.
아카이브 인덱스를 생성하지 않으면 링크 속도가 느려지고 시스템 환경에 따라서는 에러가 발생하기도 한다.
d
: 아카이브 파일 안에 하나 이상의 오브젝트 파일을 삭제한다.
t
: 아카이브에 있는 오브젝트 파일 리스트를 출력한다.
더 자세한
ar
명령어 옵션 정리는 아래 블로그에 잘 정리가 되어있으니 참고하자.