Red Hat Training

A Red Hat training course is available for RHEL 8

2.3. 소스에서 소프트웨어 빌드

소프트웨어 빌드 프로세스 중에 소스 코드는 RPM을 사용하여 패키징할 수 있는 소프트웨어 아티팩트로 변환됩니다.

2.3.1. 기본적으로 컴파일된 코드에서 소프트웨어 빌드

다음 방법 중 하나를 사용하여 컴파일된 언어로 작성된 소프트웨어를 실행 파일로 빌드할 수 있습니다.

  • 수동 빌딩
  • 자동화된 빌드

다음 섹션에서는 수동 또는 자동화된 빌드를 사용하여 C 프로그래밍 언어로 작성된 Hello World 프로그램을 빌드하는 방법을 알아봅니다.

2.3.1.1. 수동으로 cello 소프트웨어 빌드

수동 빌드를 사용하여 컴파일된 언어로 작성된 소프트웨어를 빌드할 수 있습니다.

C (cello.c)로 작성된 hello World 에는 다음과 같은 내용이 있습니다.

#include <stdio.h>

int main(void) {
    printf("Hello World\n");
    return 0;
}

절차

  1. GNU 컴파일러 컬렉션에서 C 컴파일러를 호출하여 소스 코드를 바이너리로 컴파일합니다.

    $ gcc -g -o cello cello.c
  2. 결과 바이너리 셀로를 실행합니다.

    $ ./cello
    Hello World

2.3.1.2. 셀오 프로그램에 대한 자동화된 빌딩 설정

대규모 소프트웨어는 일반적으로 자동화된 빌드를 사용합니다. Makefile 파일을 만든 다음 GNU make 유틸리티를 실행하여 자동화된 빌드를 설정할 수 있습니다.

절차

  1. cello.c 와 동일한 디렉토리에 다음 콘텐츠를 사용하여 Makefile 파일을 만듭니다.

    cello:
    	gcc -g -o cello cello.c
    clean:
    	rm cello

    cello:clean 아래의 줄은 탭 문자(tab)로 시작해야 합니다.

  2. 소프트웨어를 빌드합니다.

    $ make
    make: 'cello' is up to date.
  3. 빌드는 현재 디렉터리에서 이미 사용할 수 있으므로 make clean 명령을 입력한 다음 make 명령을 다시 입력합니다.

    $ make clean
    rm cello
    
    $ make
    gcc -g -o cello cello.c

    이 시점에서 프로그램을 다시 빌드하려는 경우 GNU make 시스템이 기존 바이너리를 감지하므로 영향을 미치지 않습니다.

    $ make
    make: 'cello' is up to date.
  4. 프로그램을 실행합니다.

    $ ./cello
    Hello World

2.3.2. 소스 코드 해석

해석된 프로그래밍 언어로 작성된 소스 코드를 다음 방법 중 하나를 사용하여 머신 코드로 변환할 수 있습니다.

  • 바이트 컴파일

    바이트 컴파일 소프트웨어의 절차는 다음 요인에 따라 다릅니다.

    • 프로그래밍 언어
    • 언어의 가상 머신
    • 해당 언어로 사용되는 툴 및 프로세스

      참고

      예를 들어 Python 에서 작성된 소프트웨어를 바이트로 작성할 수 있습니다. 배포를 위해 설계된 Python 소프트웨어는 종종 바이트로 컴파일되지만 이 문서에서 설명하는 방식에는 포함되지 않습니다. 설명된 절차는 커뮤니티 표준을 준수하는 것이 아니라 간단하게 하는 것을 목표로 합니다. 실제 Python 지침은 소프트웨어 패키징 및 배포를 참조하십시오.

    또한 원시 해석 Python 소스 코드도 사용할 수 있습니다. 그러나 바이트로 컴파일된 버전이 더 빠릅니다. 따라서 RPM 패키지는 최종 사용자에게 배포하기 위해 바이트로 컴파일된 버전을 패키징하는 것을 선호합니다.

  • Raw-interpreting

    Bash 와 같은 쉘 스크립팅 언어로 작성된 소프트웨어는 항상 원시 해석에 의해 실행됩니다.

다음 섹션에서는 Python으로 작성된 Hello World 프로그램을 바이트로 컴파일하는 방법과 Bash로 작성된 Hello World 프로그램을 원시 화하는 방법을 알아봅니다.

2.3.2.1. pello 프로그램 바이트 컴파일

Python 소스 코드의 원시 해석을 통해 바이트 컴파일을 선택하면 더 빠른 소프트웨어를 만들 수 있습니다.

Python 프로그래밍 언어(pello.py)로 작성된 Hello World 프로그램에는 다음과 같은 내용이 있습니다.

print("Hello World")

절차

  1. pello.py 파일을 바이트 압축합니다.

    $ python -m compileall pello.py
  2. 바이트로 컴파일된 파일 버전이 생성되었는지 확인합니다.

    $ $ ls __pycache__
    pello.cpython-311.pyc

    출력의 패키지 버전은 설치된 Python 버전에 따라 다를 수 있습니다.

  3. pello.py 에서 프로그램을 실행합니다.

    $ python pello.py
    Hello World

2.3.2.2. Bello 프로그램 원시 중단

Bash 쉘로 작성된 Hello World 프로그램(벨로)에는 다음과 같은 내용이 있습니다.

#!/bin/bash

printf "Hello World\n"
참고

벨로 파일의 상단에 있는 shebang (#!)기호는 프로그래밍 언어 소스 코드의 일부가 아닙니다.

shebang 을 사용하여 텍스트 파일을 실행 파일로 전환합니다. 시스템 프로그램 로더는 shebang 이 포함된 행을 구문 분석하여 바이너리 실행 파일의 경로를 가져온 다음 프로그래밍 언어 인터프리터로 사용됩니다.

절차

  1. 소스 코드로 파일을 실행 가능하게 만듭니다.

    $ chmod +x bello
  2. 생성된 파일을 실행합니다.

    $ ./bello
    Hello World