
여러 개의 파일로 구성된 코드를 하나의 library로 구성한 것.
빠르게 링킹할 수 있도록 컴파일 된 object의 형태로 이루어져 있음.
크게 static, shared로 나뉨.
컴파일 타임에 링킹되는 라이브러리로 실행파일에 라이브러리의 내용이 바로 복사가 되어 실행파일의 실행에 라이브러리 파일은 필요없음.
실행파일에 같은 내용의 코드가 여러번 작성되므로 메모리 낭비가 있음.
Linux에서 'lib<라이브러리 이름>.a'와 같은 이름으로 구성됨.
$ar -rcs libstatic.a src1.o src2.o src3.o
Windows에서 .lib 확장자.
컴파일 타임에 링킹하지 않고 컴파일 시 실행파일에는 라이브러리의 주소를 기록해두고 실행파일 실행시 라이브러리 주소에서 라이브러리를 로딩하여 실행.
컴파일 타임에서의 장점은 실행파일의 크기가 작아진다는 것.
런타임에서의 장점은 로드한 shared library는 같은 라이브러리를 사용하는 여러개의 프로세스가 주소를 공유하므로 메모리의 사용량이 적어진다는 것.
실행파일의 실행 시 라이브러리 파일이 반드시 필요함. 없으면 실행 시 오류가 발생.
Linux에서 'lib<라이브러리 이름>.so'와 같은 이름으로 구성됨.
Windows에서 .dll 확장자.