2008년 11월 14일 금요일

빌드와 컴파일의 차이

kenu님의 블로그에 빌드와 컴파일에 대한 차이를 묻는 글이 올라와서 간단히 설명해보려고 합니다.

컴파일 : 소스코드 파일 등의 원시파일을 실행파일, 라이브러리 등의 Object 파일로 바꾸는 작업

빌드 : 소스코드 파일들을 컴퓨터에서 실행할 수 있는 소프트웨어로 변환하는 일련의 과정

컴파일은 빌드의 부분 집합입니다.
빌드 과정은 제품마다 서로 다르지만 간단한 예를 하나 들어보면 다음과 같습니다.
보통 아래 과정은 Build Script에 의해서 한번에 자동으로 실행됩니다.
실제 예는 아래 나열한 것보다 수십배는 더 복잡합니다. ^^
  1. 소스코드관리시스템에 태그(베이스라인) 작성
  2. 작성된 태그(베이스라인) 체크아웃을 통해 빌드 전용시스템으로 소소코드 가져오기
  3. 새로운 빌드번호 획득 및 반영
  4. 컴파일(빌드) 시작
  5. 컴파일(빌드)시 발생한 에러 처리
  6. Doxygen 또는 JavaDoc 생성
  7. 팩키징 절차를 통해서 마스터 파일 생성
  8. 스모크 테스트 등 자동화 테스트 실시
  9. 테스트 결과 처리
  10. 빌드 결과를 관련자에 이메일로 전송
  11. 마스터 서버로 마스터 파일 복사
  12. 릴리즈 결과 전사 공지
또 빌드와 릴리즈는 항상 짝을 이뤄 따라 다니며, 수많은 B/R(Build/Release) 엔지니어들이 이에 대한 자동화와 효율성/생산성 증대를 위해서 연구를 하고 있지요. 
소프트웨어 프로젝트에서 빌드의 중요성에 대해서는 제가 이미 포스팅을 한 글이 있으니 참고하세요.

댓글 7개:

  1. 감사합니다. 잘 배웠습니다. ^^

    답글삭제
  2. 내일 강의에서 빌드에 대한 얘기가 있습니다. 빌드는 컴파일의 확장이다 라고 처음에 썼다가 너무 막연해서 구글링을 해 보았습니다. 델파이 툴의 메뉴 경험담이 처음으로 나왔고, 조엘 아저씨 사이트의 토론 게시판이 눈에 들어왔습니다. 나름 이렇게 설명하면 좋겠다 하는 부분도 있구요. Build usually means the entire process of getting a system ready for use. 빌드는 보통 사용할 준비가 된 시스템으로..

    답글삭제
  3. kenu님 반갑습니다.
    그렇게 말씀하시면 쑥스럽고요 앞으로 좋은 의견 많이 나눠요. 감사합니다.

    답글삭제
  4. 좋은 글 감사합니다.
    컴파일,빌드 정의가 깔끔하네요.

    답글삭제
  5. 블로그 이미지가 약간 바뀐 느낌인데...저만 그렇게 느끼는건가요? 하하.

    주말 재미있게 보내세요~

    답글삭제
  6. 식빵님 안녕하세요.
    블로그 대표 이미지 바뀌었습니다. 눈썰미 있으시네요.
    주말 잘보내세요. ^^

    답글삭제
  7. 서영아빠님 안녕하세요.
    빌드에 대해서 관심이 많으신가보네요.
    앞으로도 좋은 정보 많이 교환해요.
    감사합니다.

    답글삭제