ft_printf 과제를 진행하려면 이 전 과제로 만든 libft 정적 라이브러리를 사용해야한다. 어떻게 ft_printf 소스파일과 libft.a 라이브러리 파일을 함께 컴파일할 수 있는지 정리해보았다.
일반적으로 실행 파일을 만들 때는 소스 코드를 컴파일 하고 만들어진 obj 파일을 링커가 하나로 묶어 .out
(윈도우는 .exe) 파일을 만든다. 정적 라이브러리를 사용하려면 링크 단계에서 링커가 .a
파일도 같이 묶어서 하나의 .out
파일을 만들어야 한다.
즉, 컴파일에 성공해 만들어지는 .out
파일 (ft_printf 과제에서는 libftprintf.a
파일) 안에 lib의 내용이 모두 들어가게 된다.
GCC컴파일러에게 링크할 라이브러리를 명시해주는 작업이 필요하다. 아래의 gcc 명령어 옵션을 사용하면 된다.
-l
옵션 (소문자 엘)lib
와 뒤의 .a
를 때고 인식한다.libft.a
라이브러리 파일을 링크시키려면 -lft
로 옵션을 주면 된다.그렇다면 컴파일러가 라이브러리를 찾을 수 있도록 검색할 위치를 명시해 주는 작업도 필요할 것이다. 기본적으로 리눅스는 /lib, /usr/lib, /usr/local/lib
만을 검색해서 라이브러리를 찾는다. 그러므로 추가적으로 디렉토리를 검색하도록 하려면 아래의 -L
옵션을 사용하면 된다.
-L
옵션 (대문자 엘)라이브러리 위치를 정해주는 옵션이다.
사용은 다음과 같이 -L<디렉토리명>
으로 한다.
$ ar rcs libftprintf.a libftprintf.o -L./libft -lft
참고