2.3. 소스에서 소프트웨어 빌드
소프트웨어 빌드 프로세스 중에 소스 코드는 RPM을 사용하여 패키징할 수 있는 소프트웨어 아티팩트로 변환됩니다.
2.3.1. 기본적으로 컴파일된 코드에서 소프트웨어 빌드
다음 방법 중 하나를 사용하여 컴파일된 언어로 작성된 소프트웨어를 실행 파일로 빌드할 수 있습니다.
- 수동 빌딩
- 자동화된 빌드
2.3.1.1. 수동으로 샘플 C 프로그램 빌드
수동 빌드를 사용하여 컴파일된 언어로 작성된 소프트웨어를 빌드할 수 있습니다.
C (cello.c
)로 작성된 샘플 Hello World
프로그램에는 다음과 같은 내용이 있습니다.
#include <stdio.h> int main(void) { printf("Hello World\n"); return 0; }
절차
GNU 컴파일러 컬렉션에서 C 컴파일러를 호출하여 소스 코드를 바이너리로 컴파일합니다.
$ gcc -g -o cello cello.c
결과 바이너리 셀로를 실행합니다.
$ ./cello Hello World
2.3.1.2. 샘플 C 프로그램에 대한 자동화된 빌드 설정
대규모 소프트웨어는 일반적으로 자동화된 빌드를 사용합니다. Makefile
파일을 만든 다음 GNU make
유틸리티를 실행하여 자동화된 빌드를 설정할 수 있습니다.
절차
cello.c
와 동일한 디렉토리에 다음 콘텐츠를 사용하여Makefile
파일을 만듭니다.cello: gcc -g -o cello cello.c clean: rm cello
cello:
및clean
아래의 줄은 탭 문자(tab)로 시작해야 합니다.소프트웨어를 빌드합니다.
$ make make: 'cello' is up to date.
빌드는 현재 디렉터리에서 이미 사용할 수 있으므로
make clean
명령을 입력한 다음make
명령을 다시 입력합니다.$ make clean rm cello $ make gcc -g -o cello cello.c
이 시점에서 프로그램을 다시 빌드하려는 경우 GNU
make
시스템이 기존 바이너리를 감지하므로 영향을 미치지 않습니다.$ make make: 'cello' is up to date.
프로그램을 실행합니다.
$ ./cello Hello World
2.3.2. 소스 코드 해석
해석된 프로그래밍 언어로 작성된 소스 코드를 다음 방법 중 하나를 사용하여 머신 코드로 변환할 수 있습니다.
바이트 컴파일
바이트 컴파일 소프트웨어의 절차는 다음 요인에 따라 다릅니다.
- 프로그래밍 언어
- 언어의 가상 머신
해당 언어로 사용되는 툴 및 프로세스
참고예를 들어 Python 에서 작성된 소프트웨어를 바이트로 작성할 수 있습니다. 배포를 위해 설계된 Python 소프트웨어는 종종 바이트로 컴파일되지만 이 문서에서 설명하는 방식에는 포함되지 않습니다. 설명된 절차는 커뮤니티 표준을 준수하는 것이 아니라 간단하게 하는 것을 목표로 합니다. 실제 Python 지침은 소프트웨어 패키징 및 배포를 참조하십시오.
또한 원시 해석 Python 소스 코드도 사용할 수 있습니다. 그러나 바이트로 컴파일된 버전이 더 빠릅니다. 따라서 RPM 패키지는 최종 사용자에게 배포하기 위해 바이트로 컴파일된 버전을 패키징하는 것을 선호합니다.
Raw-interpreting
Bash 와 같은 쉘 스크립팅 언어로 작성된 소프트웨어는 항상 원시 해석에 의해 실행됩니다.
2.3.2.1. 샘플 Python 프로그램 바이트 컴파일
Python 소스 코드의 원시 해석을 통해 바이트 컴파일을 선택하면 더 빠른 소프트웨어를 만들 수 있습니다.
Python 프로그래밍 언어(pello.py
)로 작성된 샘플 Hello World
프로그램에는 다음과 같은 내용이 있습니다.
print("Hello World")
절차
pello.py
파일을 바이트 압축합니다.$ python -m compileall pello.py
바이트로 컴파일된 파일 버전이 생성되었는지 확인합니다.
$ ls __pycache__ pello.cpython-311.pyc
출력의 패키지 버전은 설치된 Python 버전에 따라 다를 수 있습니다.
pello.py
에서 프로그램을 실행합니다.$ python pello.py Hello World
2.3.2.2. 샘플 Bash 프로그램 원시 해석
Bash 쉘로 내장된 언어(llo)로 작성된 샘플
.
Hello World
프로그램에는 다음과 같은 내용이 있습니다
#!/bin/bash printf "Hello World\n"
벨로 파일의 상단에 있는 shebang (#!)
기호는 프로그래밍 언어 소스 코드의 일부가 아닙니다.
shebang 을 사용하여 텍스트 파일을 실행 파일로 전환합니다. 시스템 프로그램 로더는 shebang 이 포함된 행을 구문 분석하여 바이너리 실행 파일의 경로를 가져온 다음 프로그래밍 언어 인터프리터로 사용됩니다.
절차
소스 코드로 파일을 실행 가능하게 만듭니다.
$ chmod +x bello
생성된 파일을 실행합니다.
$ ./bello Hello World