8.1 Introduction
라이브러리를 만들자! 하는 내용
8.2 How the Linker Works
컴파일러는 하나의 고수준 언어 파일(예를들어 C언어)을 컴파일해서 하나의 오브젝트 파일을 만든다.
링커(ld)는 오브젝트 모듈들을 묶어주는 역할을 한다.
8.3 How to Design a Library
링커가 어떻게 동작하는지를 아는것은 라이브러리 디자인을 하기 위해서 중요한 점이다.
8.4 Creating a Library
librarian(라이브러리 관리자)을 ar (archiver의 약자) 이라고 하는데, GNU Binutils project에서 찾을 수 있다.
이 프로그램은 이미 AVR 타켓용으로 avr-ar 이라는 이름으로 빌드되어 있다.
librarian 프로그램이 하는일은 간단하다. : 오브젝트 모듈들의 리스트를 단일 라이브러리에 수집하고 링커가 사용할 인덱스를 생성한다.
라이브러리에 붙일 파일명은 지정된 패턴을 따라야만한다. : libname.a
파일명 앞에 반드시 "lib"가 와야되고, 그다음 유일한 이름을 지정한다. 확장자는 .a로 해야 한다.
command line 역시 간단하다.
avr-ar rcs <library name> <list of object modules>
r 은 archive에 오브젝트 모듈들을 삽입하라는 명령이다.
c 는 archive를 생성하라는 명령이다.
s 는 archive에 object-index를 쓰거나, 이미 파일이 존재한다면 업데이트 하라는 명령이다.
ar 프로그램에 대한 자세한 설명은 GNU Binutils manual을 참조하면 된다.
8.5 Using a Library
라이브러리를 사용하려면 링커 커맨드라인에 -l 스위치를 써야 한다.
-l 다음에 바로 따라오는 문자열은 library filename에서 유일한 부분이다.
예를들어
-lm
이것은 다음 파일명으로 확장될 것이다.
libm.a
이렇게 하면 math library가 include 된다.
-lprintf_flt
이렇게 하면 링커는 다음 라이브러리를 찾는다.
libprintf_flt.a
See the GNU Binutils manual for more information on the GNU linker (ld) program.
'AVR' 카테고리의 다른 글
10 Porting From IAR to AVR GCC (0) | 2014.04.17 |
---|---|
9 Benchmarks (0) | 2014.04.17 |
7 Inline Assembler Cookbook (0) | 2014.04.17 |
6 avr-libc and assembler programs (0) | 2014.04.17 |
5 Data in Program Space (0) | 2014.04.17 |