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 |
---|