임베디드/리눅스(Linux)

리눅스 빌드 시스템(1) gcc Linux Build System gcc

마달랭 2024. 9. 12. 14:25

개요

Build System 이란, Build 할 때 필요한 여러 작업을 도와주는 프로그램들을 의미한다.

빌드란 소스코드에서 실행 가능한 소프트 웨어로 변환하는 과정 또는 결과물을 말한다.

 

 

C언어 빌드 과정

gcc 기준 빌드 과정은 크게 둘로 나뉜다.

  1. Compile & Assemble : 하나의 소스코드 파일이 0과 1로 구성된 Object 파일이 만들어짐
  2. Linking : 만들어진 Object 파일들 + Library 들을 모아 하나로 합침

 

gcc 빌드 실습

  1. /test1 디렉토리를 생성 한다.
  2. 해당 디렉토리로 이동 후 main.c, yellow.c, yellow.h 파일을 생성한다.
  3. 2번에서 생성한 각각의 파일에 소스 코드를 입력해 준다.
  4. .c 파일을 각각 Compile & Assemble 한다.
  5. .o 파일(Object 파일)이 생성되는지 확인 한다.
  6. 만들어진 Object 파일들과 라이브러리 함수들을 하나로 합친다. (Linking)

main.c

#include <stdio.h>
#include "yellow.h"

int main() {
    printf("I'm Green!\n");
    yellow();

    return 0;
}

 

yellow.c

#include<stdio.h>

void yellow() {
    printf("I'm yellow\n");
}

 

yellow.h

void yellow();

 

파일 생성

 

 

빌드 자동화 스크립트

bash shell script 를 이용한 build 방식을 다루어 본다.

자동화 프로그램 개발에 특화된 Script 언어 .sh가 있다.

 

bash shell 명령어로 스크립트를 제작하고 실행한다.

  1. ~/test1/ 를 복사해서 ~/test2 생성
  2. cp –r ~/test1 ~/test2
  3. vi ~/test2/build.sh
  4. source build.sh
  5. ./gogo
#! /bin/bash
gcc -c ./main.c
gcc -c ./yellow.c
gcc ./main.o ./yellow.o -o ./gogo
rm -r ./*.o

 

 

yellow.c 하나만 수정해도, 다시 build 를 진행하게 된다.

main.c 는 다시 build 할 필요가 없지만, 다시 build 가 된다.

이럴 때 필요한 게 바로 make build system이다.

 

 

 

728x90