GCC로 정적 라이브러리 파일 만들기

이대현·2020년 4월 11일
0

C / CPP

목록 보기
7/28

1. GCC컴파일러를 이용해 obj파일을 생성한다.

$ gcc -c filename.c 

컴파일에 성공하면 확장자가 .o인 obj파일 (filename.o)이 생성된다.

2. 생성된 obj파일을 이용해 라이브러리 파일을 만든다.

$ ar rcs libfile.a filename.o

라이브러리 작성에 사용하는 명령어는 ar 이다.

위와 같이

<ar 옵션> <생성하고자 하는 라이브러리의 이름> <오브젝트 파일들의 이름>

을 나열한후 실행한다.

윈도우에서 라이브러리 파일의 확장자는 .lib이지만 리눅스에서는 .a 확장자를 지닌다.

2.1. 자주 쓰이는 ar 명령어 옵션

r : 지정한 아카이브로 모듈(obj파일) 추가. 새로운 obj파일이면 추가, 기존 파일이면 치환.

c : 아카이브 (라이브러리 파일) 생성.

s : 아카이브 인덱스를 생성.

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

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

v : verbose mode(동작 내용 출력). 파일 크기나 갱신 시각 등 자세한 정보도 출력.

d : 아카이브 모듈을 삭제. 삭제할 파일이 없다면 아카이브를 건들지 않음.


ar 명령은 정적 라이브러리를 생성할 때뿐만 아니라, 정적 라이브러리의 기능을 부분적으로 변경하고자 할 경우에도 사용할 수 있다.
라이브러리가 모두 오픈 소스로 구성되어 있지 않은 이유 등으로 정적 라이브러리를 처음부터 다시 작성할 수 없는 경우에 편리하게 이용될 수 있다.

profile
삽질의 기록들 👨‍💻

0개의 댓글