본문 바로가기

IT/Linux

정적 라이브러리 만들기

  • 라이브러리로 쓸 함수가 포함된 파일 두개 만들기
  • 컴파일 해서 오브젝트로 만들기
  • 두개의 오브젝트를 하나의 라이브러리로 합치기
  • 라이브러리를 사용할 메인프로그램 코딩
  • 라이브러리를 포함해서 컴파일
  • 동작 실행

1. 라이브러리로 쓸 함수가 포함된 파일 두개 만들기

2. 컴파일 해서 오브젝트로 만들기

#gcc -c file1.c file2.c

c 옵션은 오브젝트 파일을 만드는 옵션이다. 오브젝트 파일은 .o 확장 자를 가지며, elf 바이너리 구조이다.

결과물 : file1.o file2.o

 

3. 두개의 오브젝트를 하나의 라이브러리로 합치기

#ar rscv libstatic.a file1.o file2.o

  • 두개의 오브젝트 파일을 libstatic.a 파일로 합친다.
  • ar은 tar 과 비슷하며, archive 를 뜻한다.
  • 옵션 rscv 에 대한 설명이 자세히 나온곳은 아무데도 없는것 같고. ar 옵션을 검색해 보니 몇가지 나오긴 했다.
  • ar 옵션
    • t : library 내용보기
    • p : library 소스보기
    • r : library insert or replace
    • s : Index 생성
    • x : 묶은 파일 풀기
    • d : 삭제

결과물 : libstatic.a

 

4. 라이브러리를 사용할 메인프로그램 코딩

5. 라이브러리를 포함해서 컴파일

#gcc -o test test.c -L./ -lstatic

동적라이브러리 작성시 먼저 설명한 부분이지만… 마지막 -l라이브러리이름 부분은 반드시 lib이름 형태로 파일명을 작성하고, 이부분에 lib 를 빼고 -l 을 넣어야 정확히 동작된다.

 

결과물 : 실행파일

-L 옵션 (대문자 엘) 

• 라이브러리 위치를 정해주는 옵션이다. 

• 사용은 다음과 같이 -L<디렉토리명> 으로 한다. 

• 기본적으로 리눅스는 /lib, /usr/lib, /usr/local/lib 만을 검색해서 라이브러리를 찾는다. 

• 그러므로 추가적으로 디렉토리를 검색하도록 하려면 -L 옵션을 사용하면 된다.

 

-l 옵션 (소문자 엘) 

• 링크할 라이브러리를 명시하는 옵션이다. 

• 정적 라이브러리를 링크시키는데 사용되며 대상 라이브러리 파일의 이름에서 앞의 lib와 뒤의 .a를 때고 인식한다. 

• 예를 들어 libmylib.a 라는 라이브러리 파일을 링크시키려면 -lmylib 로 옵션을 주면 된다.

6. 동작

#./test

test 1

test 2

test 3 #

 

 

 

 

C++ - [펌] Linux에서 정적 라이브러리 만들기 - jacking75

출처: [리눅스 정적 라이브러리 만들어 쓰기 작성자 라온이아부지 선성태] (http://blog.naver.com/r2adne/120127876141) 순서 라이브러리로 쓸 함수가 포함된 파일 두개 만들기 컴파일 해서 오브젝트로 만들

jacking75.github.io

 

'IT > Linux' 카테고리의 다른 글

OS 버전 확인하기  (0) 2020.09.16
[Linux] 동적 라이브러리 만들기  (0) 2020.08.28
vi 편집기 문자열 찾기  (0) 2020.07.30
[Linux] sh파일로 gcc 컴파일  (0) 2020.07.30
gcc 컴파일  (0) 2020.07.17