반응형

정적 라이브러리 만들어보기

라이브러리, 다양한 오브젝트 파일들을 포함하는 하나의 파일로 정적 라이브러리와 동적 라이브러리로 나뉜다.

정적 라이브러리는 라이브러리, 오브젝트파일들을 link해서 하나의 실행파일 안에 포함시킨다. 이 방식으로 (.out) 실행파일이 만들어진다.

 

1.    func1.c func2.c 라는 함수 모듈 만들기

$ vi func1.c

$ vi func2.c

그 안에는 함수 만들기(C언어 이용)

                           

 

 

         

              

2. 헤더파일 만들기(조건부 컴파일)

 

 

 

$ vi funcs.h 편집창을 켠 뒤, 위와 같이 입력한다한번만 include하기 위해 #ifndef를 이용. 

 

$ mkdir include                   include라는 폴더를 만들고

 

$ mv funcs.h include            그 안에 funcs.h를 저장한다.

 

l  #ifndef: 매크로 이름이 선언되어 있지 않을 경우에 매크로를 정의한다.

l  #ifdef:  매크로가 정의되어있으면 컴파일을 수행한다.

 

 

 

3.    Myapp.c에서 main 만들기. 직접 만든 함수라이브러리를 사용한다.

#include "funcs.h"           <- 직접 만든 라이브러리

이제 hi name 함수를 사용 가능

 

 

4.     다른 라이브러리 추가 없이 직접 만든 코드의 .o 파일을 만든다.

$ gcc-c func1.c               $ func1.o 생성

$ gcc-c func2.c               $ func2.o 생성

 

 

5.    여러 오브젝트 파일 여러 개를 하나로 묶어서 zip파일 만들듯이(오브젝트파일 연속 입력).

 

$ ar rv libfuncs.a func1.o func.o

           func1.o, func2.o 파일을 하나로 묶어” libfuncs.a라는 정적 라이브러리(.a)를 만든다.

 

$ mkdir lib

$ mv libfuncs.a lib

여기서 만들어지는 libfuncs.a 파일을 lib폴더를 만들어 이동시킨다. (mkdir, mv 사용)

 

 

 

 

6.    Main이 들어있는 myapp.c 파일을 생성.

libfuncs.a 라이브러리 안에 있는 함수들을 쓰기 위해 include.

       

 

 

 

 

7.    $ gcc myapp.c -o myapp -I./include -L./lib –lfuncs

gcc: myapp.c라는 파일을 이용해,

-o: 이름을 설정하는 옵션. (myapp이라는 이름을 갖는 오브젝트파일을 만든다)

-I./include: 현재 dir에 있는 Include 폴더에서 헤더를 찾아보라는 옵션. (funcs.h)

-L./lib: 현재 dir에 있는 lib 폴더에서 라이브러리를 찾아보라는 옵션. (libfuncs.a)

–lfuncs: 오브젝트파일 myapp.o를 라이브러리 libfuncs.a와 링크하라는 옵션

 

 

8.     $ ./myapp실행

 

 

9.    $nm –s libfuncs.a

실제로 생성된 라이브러리./에 직접 만들 함수들이 들어가있는지, 변수들이 define됐는지 확인하는 utility.

 

 

 

 

 

 

전체 단계를 화면에 모두 출력 및 저장하는 방법

모든 단계를 저장해주는 옵션이 존재한다.

컴파일 과정을 모두 출력하고, 각 단계마다 생성되는 중간 파일은 삭제하지 않고 모두 저장하는 옵션이다.

 

# gcc -v --save-temps -o hello hello.c


1. -v
옵션: 컴파일되는 과정을 화면으로 모두 출력한다.


2. --save-temps
옵션: 컴파일 과정에서 발생되는 중간 파일을 지우지 않고 저장한다.

 

 

 

 

반응형

'컴퓨터공학 > EmbededSystem sw공학' 카테고리의 다른 글

[실습] 간단한 UpDown Game  (0) 2018.09.18
3. shell script 에서 반복문  (0) 2018.09.18
2. shell script에서 조건문  (0) 2018.09.17
1. Linux 편집기 기본 사용법  (0) 2018.09.17

+ Recent posts