[Linux] Build

3818 단어 linuxlinux

빌드란?

소스코드에서 실행 가능한 SW로 변환하는 과정 또는 결과물

빌드 과정

  1. Compile & Assemble
    하나의 소스코드 파일이 0과 1로 구성된 Object 파일로 만들어진다.
    gcc -c [c파일명] : c파일이 .o를 가진 object 파일로 변경

  2. Linking
    만들어진 Object 파일들과 Lib 파일들을 하나로 합친다.
    gcc [o파일명] -o [실행파일명]

  3. 실행
    실행파일명을 통해 실행시키기

(참고) 빌드 자동화 스크립트

빌드를 해야할 때마다 컴파일과 링크를 하지 않고, 하나의 스크립트를 만들어 스크립트만 실행하여 빌드를 진행하도록 할 수 있습니다.

다음과 같은 명령어를 통해 스크립트 제작 후 실행파일을 실행할 수 있지만, 하나의 파일을 수정해도 모든 파일을 컴파일 및 링크해야 하는 단점이 있다. 결국, 느리다는 단점이 있다.
이 단점을 해결시켜주는게 make 시스템이다.

Build System

Build System : Build 할 때 필요한 여러 작업을 도와주는 프로그램들, 빠르다는 장점이 있다.

종류 :

  1. make
  2. cmake

Make

make는 각각의 소스코드 파일의 생성날짜를 기록합니다. 해당 파일을 수정하면 기록날짜가 변경되어, 수정된 파일을 구별할 수 있습니다.
apt install make y를 통해 설치하기

사용 방법

  1. 기존 object 파일들 및 실행파일들을 삭제해준다.
  2. "makefile"이라는 스크립트 파일을 생성한다.
  3. make라는 명령어를 통해 스크립트를 실행한다.

makefile 구성

make의 장점은 수정된 파일만 컴파일 및 링크하기 때문에 속도가 빠르다.

CMake

make보다 조금 더 편한 방식인 cmake 방식이다.
cmake : makefile를 자동 생성할 수 있는 build system(빌드 과정에 도움을 주는 툴)
sudo apt install g++ cmake y를 통해 cmake 설치

사용 방법

1.CMakeLists.txt 파일 생성
2. cmake . 명령어를 통해 makefile 생성
3. make 명령어를 통해 빌드
4. ./[실행파일명]으로 생성한 실행파일 실행

CMakeLists.txt

Make 스크립트 기초

실행 규칙

make [Target 명] : 지정된 Target을 수행한다.
make : 첫 번째 Target을 수행한다.
스크립트 내에는 반드시 1개 이상의 Target이 존재해야 한다.
echo : 화면 출력 shell 명령어, 띄어쓰기는 그냥 띄면 되는데, 어려번 띄어도 1번 띈걸로 판단합니다.
@echo : 두 번 출력을 막는다. 결과만 출력된다.
$@ : Target을 나타내는 변수

HI :
	echo "Hello";

make HI
==> 
echo "Hello";
"Hello";

///////////////

HI : 
	@echo "Hello";
    
make HI
==> 
"Hello";

의존성 타겟


해당 이미지에서 bluepink라는 타겟 옆에 적은 부분이 의존성 타겟에 해당됩니다.

매크로

매크로는 결국 변수를 뜻합니다.
매크로는 어느 위치든 작성해줘도 되지만, 매크로는 대체로 위에다 작성하면 밑에 작성해도 위에서 인식하도록 동작된다.

주석

#을 통해 주석

연산자

+=기호는 한 칸 띄어쓰기 후 뒤에 붙인다.
:= -> 현재 기준에서의 값을 넣는다.
= -> 최종 변수 결과를 집어 넣는다.

좋은 웹페이지 즐겨찾기