자바
-
자바는 컴파일러가 바로 바이트 코드를 생성하며, 링크 과정이 없다.
-
바이트 코드는 자바 가상 머신에서만 실행 가능하다.
-
자바는 런타임에 필요한 클래스들이 자바 가상 기계에 의해 링크되며 클래스 로더가 필요한 클래스를 동적으로 로딩한다.
-
클래스 로더 객체를 이용하여 개발자가 직접 클래스를 로딩할 수 있다.
C와 C++
-
C와 C++에서는 컴파일러가 중간 단계인 목적 코드를 생성한 후 링커가 필요한 라이브러리들을 링크하여 실행 가능한 파일(.exe)을 만든다.
-
정적 라이브러리의 경우 실행 파일에 포함시키므로 실행 파일 크기가 커진다.
-
동적 라이브러리의 경우 실행 시간에 링크가 일어난다.
-
목적 코드 및 실행 파일은 플랫폼에 따라 다르므로, 플랫폼이 바뀌면 소스 코드를 수정하거나, 컴파일과 링크를 다시해야 한다.
링커
컴파일러가 만들어낸 하나 이상의 목적 코드를 갖고 이를 하나의 실행 가능한 프로그램으로 병합하는 프로그램이다.