DEV/CS

[CS] 컴파일, 링크, 빌드, 디버그, 실행의 개념과 차이

Bi3a 2023. 9. 14. 01:24

728x90

컴퓨터 사이언스 기초 학습입니다.

 

 

 

 

Table of Contents

     

    컴파일(Compile)

    컴파일 : 사람이 이해하는 언어를 컴퓨터가 이해할 수 있는 언어로 바꾸는 과정입니다.
    즉 개발자가 짜는 소스 코드(원시 코드)를 컴퓨터 프로세서가 읽을 수 있는 목적 파일(코드)로 바꾸어 주는 작업입니다.

     * Java의 경우 .java 파일 -> java 컴파일러(javac)를 거쳐 생성된 .class가 컴파일 결과물입니다.
     * C의 경우 .c 파일 -> 전처리 과정, 컴파일러와 어셈블러를 거쳐  생성된 Object 파일이 컴파일 결과물입니다.

     

    컴파일과 링크(Link), 빌드(Build)

    1. 링크 : 컴파일 된 목적 파일을 실행 가능한 파일로 만들게끔 연결하는 작업입니다.
    컴파일 후 소스 파일 A에서 소스 파일 B와 라이브러리 C를 불러오기 위해 이들을 '링커'가 연결해주는 작업을 합니다.
     * 일부는 컴파일 + 링크 작업까지를 넓은 범위의 컴파일이라고 이해하기도 합니다.

    1-1. 링크의 종류 :
     * 정적 링크(Static Link) : 컴파일 된 목적 파일들을 찾아 연결하여 실행 가능한 파일을 만드는 것
     * 동적 링크(Dynamic Link) : 프로그램 실행 중 외부에 존재하는 필요하는 코드들을 찾아 연결하는 것


    2. 빌드 : 소스 코드를 컴퓨터에서 실행할 수 있는 독립적인 소프트웨어 등의 형태로 가공하는 것
    즉, 빌드 = 컴파일 + 링크 입니다.
    * Java의 경우는 실행 가능한 .jar, .war 파일이 그 결과물입니다.
    * C의 경우 앞의 과정을 거쳐 만들어진 실행 가능한 .exe 파일이 그 결과물입니다.

    2-1. 빌드 툴 : 빌드 과정을 도와주는 툴입니다.
    전처리(preprocessing), 컴파일(Compile), 패키징(packaging), 테스팅(testing), 배포(distribution) 기능을 제공합니다.
    종류로는 Ant, Maven, Gradle 등이 있습니다.

     

     

    디버그(Debug)

    디버그 : 말 그대로 버그를 잡아내기 위한 작업으로, 실행에 있어서 오류의 원인을 찾아내는 것이 목적입니다.
    디버그는 일반적으로 소스 코드를 작성할 수 있는 IDE 툴에서 제공하는 *중단점 설정 기능을 활용할 수 있습니다.
    * 디버그 버튼을 누를 시 처음부터 ~ 설정한 중단점까지 설정한 구역에 대한 코드만 실행이 되며 그 결과를 확인 가능

     

    실행(Run)

    실행 : 소스 코드의 전체를 실행하는 것을 목적으로 하는 작업입니다.
    디버그의 중단점 설정을 안할 시 실행과 디버그에서 기능적인 차이점은 없습니다.

     

    'DEV > CS' 카테고리의 다른 글

    [CS] 정적 웹과 동적 웹, WEB, WAS의 이해  (0) 2023.10.18