개발하면서 컴파일과 빌드를 수도 없이 하지만 그에 대한 정확한 의미를 알지 못했다.
인터넷 검색을 통해 이해한 사실을 정리해보고자 한다.
1. 컴파일(Compile)
개발자가 작성한 소스코드를 컴파일러(Compiler)를 통해 바이너리 코드로 변환하는 과정을 말한다.
즉, 소스코드를 컴퓨터가 이해할 수 있는 기계어로 변환하는 작업을 말한다.
자바의 경우 member.java를 자바 컴파일러를 통해 member.class로 변환하는 과정을 의미한다.
(member.class는 JVM(자바가상머신)에서 실행가능한 바이트코드이다.)
2. 링크(Link)
A라는 소스코드에서 B라는 소스코드를 호출하는 경우 A와 B를 연결해주는 작업
정적 링크
컴파일해서 나온 바이너리 코드와 정적 라이브러리를 직접 링크하여 하나의 실행파일을 만드는 과정을 의미한다.
그래서 정적 링크 시, 라이브러리 파일을 찾지 못하면 링크에러가 발생한다.
정적 링크의 단점은 링크 시 연결된 모든 소스를 로드하기 때문에 실행파일이 커지고 메모리 공간 효율이 떨어지게 된다.
동적 링크
실행파일과 라이브러리 파일이 독립적이다.
프로그램 실행 도중 필요한 라이브러리가 생기면 동적으로 연결하는 작업을 의미한다. 자바의 경우 JVM이 프로그램 실행 도중 필요한 클래스를 찾아서 클래스 패스에 로드해주는데 이것이 동적링크의 예이다.
3. 빌드(Build)
소스코드 파일을 실행가능한 소프트웨어 산출물로 만드는 일련의 과정을 말한다.
빌드에서는 컴파일, 테스트, 배포 등 과정이 포함될 수 있고, 빌드 과정을 도와주는 도구를 빌드 툴이라 한다.
자바를 예로 들자면 빌드 시 컴파일, 테스팅, 패키징등 작업이 일어난 후 target폴더 안에 생성되는 .jar, .war 것을 의미한다.
빌드 툴로는 Ant, Maven, Gradle 등이 있다.
'IT > 기타' 카테고리의 다른 글
[JWT] Json Web Token이란? (0) | 2020.10.02 |
---|---|
[Javascript] Jqgrid Custom (0) | 2020.09.14 |
[보안] 공개키 암호화 방식 (0) | 2020.07.20 |
XSS란? (0) | 2020.07.16 |
OAuth2 란? (1) | 2020.02.29 |