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