메인 파일이 있고, 메인파일의 헤더 파일이 있고, 헤더 파일에서 가져와서 사용해야하는 c파일들이 있다.
이 c 파일들을 묶어서 라이브러리로 만들어 사용하고 싶다.
내가 만든 라이브러리를 사용하는 방법
내가 만든 각 라이브러리들을 모아서 하나로 컴파일 한 후 불러서 사용할 수 있는데,
이를 하지 않으면 컴파일할 때
gcc -o(이름 붙여주기) mycp main.c myfopen.c ... myfput.c
이런식으로 하나하나 불러서 컴파일해주어야 한다.
표준 입출력 라이브러리를 사용할 때는 따로 라이브러리를 명시하지않아도 된다.
$ gcc a.c
math라이브러리를 사용할 떄는
$ gcc a.c -lm
curses 라이브러리를 사용할 때는
$ gcc a.c -lcurses
이런식으로 뒤에 붙여서 약어로 사용해주면 된다.
다른 라이브러리들도 마찬가지로 이런 형식으로 진행된다.
라이브러리가 정해진 디렉토리에 위치하지 않은 경우에는 -L 옵션뒤에 해당파일 경로를 지정해주고, -l 옵션 뒤에 해당 경로에 있는 사용할 라이브러리를 적어주면 된다.
$ gcc a.c -L/home/gigibean/mylib -labc
따로 만든 라이브러리 모음을 우선 하나씩
$ gcc -c ,,.c
이렇게 -c 옵션을 주어서 목적 파일로 만든다.
그런 다음
$ ar -q libmystdio.a myfopen.o ... myfput.o
이런식으로 해당 목적파일들을 모아서 mystdio.a 파일로 만들면되는데,
1) 라이브러리 파일들은 .a 확장자를 가진다.
2) 라이브러리 파일을 만들 때는 만들고 싶은 이름 앞에다가 lib을 붙여준다.
3) 라이브러리 파일을 만들기 위해서 ar -q 명령어를 사용한다.
그렇게 하면 libmystdio.a 라는 파일이 만들어진다.
이를 사용하기 위해서는
$ gcc -o mycp main.c -L. -lmystdio
위처럼 사용하는데,
해당 라이브러리는 .(현재 위치)에 있고
해당 디랙토리 위치에 있는 mystdio라는 라이브러리를 컴파일할 떄 같이 링크시켜서 하겠다는 명령어이다.
추가로 ar 이라는 명령어는 만들어진 .o파일들을 하나로 묶어주는 명령어이다.
그리고
ar -t는 해당 묶여진 파일들을 볼 수 있는 명령어이다.(test)
ar -q는 하나로 묶어서 다음 인자로오는 이름으로 만들라는 명령어이다.
이렇게 ar -q 명령어를 사용해서 라이브러리를 생성할 수도 있지만,
Makefile을 만들어서 사용할 수도 있다.
OBJS = fopen.o fclose.o fput.o fget.o
lib: $(OBJS)
ar -q libmystdio.a $(OBJS)
@echo "libmystdio is created.."
clean:
rm -f $(OBJS) libmystdio.a
.c.o :
@gcc -c -w $<
@echo gee -c $<
이렇게 makefile을 만든 후
make lib
이라고 명령어를 입력하면
자동으로 해당 명령어에 맞춰서 목척파일들과 목적파일들을 묶은 라이브러리 파일이 만들어진다.
이렇게 만들어진 라이브러리를 gcc 명령어와 -L -l 옵션들을 함꼐 사용해서 라이브러리를 추가하여 컴파일 해주면 된다.
'개발👩💻 > 시스템프로그래밍' 카테고리의 다른 글
프로세스 다루기 1(10-2-2) (0) | 2021.06.05 |
---|---|
프로세스 다루기 1(10-2-1) (0) | 2021.06.05 |
리눅스 프로세스 관리(10-1) (0) | 2021.06.05 |
예제 프로그래밍: myrmdir, myls(9-2) (0) | 2021.05.08 |
디렉토리 다루기(9-1) (0) | 2021.05.08 |