2011. 7. 4. 02:04

♧ 사실 ar 명령으로 생성한 아카이브는 정적 라이브러리에 국한되지 않고

tar(1) 등과 마찬가지로 범용적인 비압축 아카이브로 사용할 수 있다.

그러나 일반적으로는 정적 라이브러리를 다루기 위해 사용된다.

   

   

▶ 아카이브를 생성할 경우 :: ar rcus [라이브러리 이름] [오브젝트 파일들]

r 옵션 :: 새로운 오브젝트 파일이면 추가, 기존 파일이면 치환함.

c 옵션 :: libhoge.a 파일이 존재하지 않아도 경고 메시지를 출력하지 않음.

u 옵션 :: 오브젝트 파일의 타임스탬프를 비교해 새로운 파일일 경우에만 치환함.

s 옵션 :: ranlib(1)과 마찬가지로 아카이브 인덱스를 생성.

→ 아카이브 인덱스를 생성하지 않으면 링크 속도가 느려지고, 시스템 환경에 따라서는 에러가 발생.

(※ 아카이브 인덱스는 nm -s로 조회할 수 있다.)

   

▶ 기존 아카이브 파일에 오브젝트 제거 :: ar ds [라이브러리 이름] [오브젝트 파일들]

d 옵션 :: 아카이브 모듈을 삭제

→ 삭제할 파일이 없다면 아카이브를 건들지 않음.

   

▶ 아카이브의 내용을 조회 :: ar tv [라이브러리 이름]

t 옵션 :: 아카이브에 있는 파일 리스트 출력

v 옵션 :: 자세한 내용을 보여주는 verbose 모드.

→ 이 옵션을 이용하면 파일크기나 갱신시각 등의 정보도 출력.

   

▶ 아카이브에서 파일을 추출하려면 :: ar xv [라이브러리 이름]

x 옵션 :: 아카이브에서 오브젝트 파일 추출

→ v옵션을 지정하면 추출한 파일에 대한 파일명 출력.

   

 

▷ ar 명령은 정적 라이브러리를 생성할 때뿐만 아니라,

정적 라이브러리의 기능을 부분적으로 변경하고자 할 경우에도 사용할 수 있다.

라이브러리가 모두 오픈 소스로 구성되어 있지 않은 이유 등으로

정적 라이브러리를 처음부터 다시 작성할 수 없는 경우에 편리하게 이용될 수 있다.

   

그 밖에도 아카이브 냉의 이동, 제거 등 아카이브를 다루는 옵션이 더 있지만,

대부분의 경우 위에서 설명한 옵션만으로도 문제가 없을 것이다.

   

Posted by devanix