본문 바로가기
42cursus/libft

Library 연결하기

by 인듯아닌듯 2020. 6. 30.

 

1. makefile과 libft.a의 활용 다시 project 1으로 돌아와서, 라이브러리 활용에 대해서 복습해보았다.

library이 종류는 stationary(.a), shared(.so) 두가지가 있다. 정적라이브러리는 무거운대신 빠르고, 공유라이브러리는 가벼운대신 느리다. https://d-yong.tistory.com/5

 

2. "ar"은 archive의 약자로 정적라이브러리를 만드는데에 이용한다. rsc 는 옵션이고, s옵션은 ranlib와 같다고하는데 정확히 모르겠다.

(-s : Regenerates the external symbol table regardless of whether the command modifies the archive.)

https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.1.0/com.ibm.zos.v2r1.bpxa500/libarc.htm http://blog.naver.com/PostView.nhn?blogId=ygszzang11&logNo=50178971588

 

3. libft.a를 만들었다면, 기본적인 명령어는 gcc main.c -L./ -lft 이다 주의사항: -l(L의 소문자) libft.a에서 lib와 .a를 빼서 -lft이다.

 

4. libft.a가 source라면, 소스코드에서 사용하기 위해서는 헤더파일이 필요하다. 소스코드에 #include "libft.h" 가 있다면, 자동적으로 현재 디렉토리에서 찾아서 이용한다. 하지만 헤더파일이 폴더에 들어가 있는 경우는 #include "./header/libft.h" 또는 gcc main.c -Iheader

주의사항 : -Iheader에서 I는 i의 대문자

 

5. gcc [options] [source files] [object files] [-Ldir] -llibname [-o outfile] 기본구조 gcc -l links with a library file. gcc -L looks in directory for library files. https://www.rapidtables.com/code/linux/gcc/gcc-l.html

 

 

어셈블리 코드, 목적 파일, 기계어

목적파일은 기계어로 가기 이전의 link를 거쳐야 실행가능한 기계어 파일로 묶일 수 있다. 그러나 목적파일은 기계어의 일부로 보며, 비슷한 의미로 쓰는 것 같다.

https://stackoverflow.com/questions/466790/assembly-code-vs-machine-code-vs-object-code

'42cursus > libft' 카테고리의 다른 글

Makefile 정복하기  (0) 2020.06.28