*.a 는 아카이브(Archive) 라는 뜻이다. 보통 우리가 object 파일들을 묶어서 library 로 제공하는 것과 동일하다. 이런 의미에서 *.so 도 동일한 성격이다. java 프로그램을 짜본 개발자라면 jar 파일을 연상하면 이해가 쉽다. C프로그램에 1차 컴파일하면 .o 파일이 생성된다. 소스 속에 main() 함수가 있다면 실행 바이너리로 컴파일 되겠지만 외부에서 호출할 수 있는 function 들로만 구성되어 있다면 .c 소스를 컴파일하면 .o 파일이 생성된다. 흡사 .java 를 컴파일 하면 .class 가 생성되는 것과 같다. java 는 원래 태생이 c 언어에서 시작되었기 때문에 그 구조가 비슷할 수 밖에 없다. 이제 본론으로 들어가서 *.a 와 *.so 의 차이점을 생각해 보면 ..