2.3. 소스에서 소프트웨어 빌드
소프트웨어 빌드 프로세스 중에 소스 코드는 RPM을 사용하여 패키징할 수 있는 소프트웨어 아티팩트로 변환됩니다.
2.3.1. 기본적으로 컴파일된 코드에서 소프트웨어 빌드 링크 복사링크가 클립보드에 복사되었습니다!
다음 방법 중 하나를 사용하여 컴파일된 언어로 작성된 소프트웨어를 실행 파일로 빌드할 수 있습니다.
- 수동 빌드
- 자동화된 빌드
2.3.1.1. 수동으로 샘플 C 프로그램 빌드 링크 복사링크가 클립보드에 복사되었습니다!
수동 빌드를 사용하여 컴파일된 언어로 작성된 소프트웨어를 빌드할 수 있습니다.
C (cello.c
)로 작성된 샘플 Hello World
프로그램에는 다음과 같은 내용이 있습니다.
프로세스
GNU Compiler Collection에서 C 컴파일러를 호출하여 소스 코드를 바이너리로 컴파일합니다.
gcc -g -o cello cello.c
$ gcc -g -o cello cello.c
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 결과 바이너리 셀로를 실행합니다.
./cello
$ ./cello Hello World
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.3.1.2. 샘플 C 프로그램에 대한 자동화된 빌드 설정 링크 복사링크가 클립보드에 복사되었습니다!
대규모 소프트웨어는 일반적으로 자동화된 빌드를 사용합니다. Makefile
파일을 만든 다음 GNU make
유틸리티를 실행하여 자동화된 빌드를 설정할 수 있습니다.
프로세스
cello.c
와 동일한 디렉토리에 다음 콘텐츠를 사용하여Makefile
파일을 만듭니다.cello: gcc -g -o cello cello.c clean: rm cello
cello: gcc -g -o cello cello.c clean: rm cello
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cello:
및clean
아래의 줄은 탭 문자(tab)로 시작해야 합니다.소프트웨어를 빌드합니다.
make
$ make make: 'cello' is up to date.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 빌드는 현재 디렉터리에서 이미 사용할 수 있으므로
make clean
명령을 입력한 다음make
명령을 다시 입력합니다.make clean make
$ make clean rm cello $ make gcc -g -o cello cello.c
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 시점에서 프로그램을 다시 빌드하려는 경우 GNU
make
시스템이 기존 바이너리를 감지하므로 영향을 미치지 않습니다.make
$ make make: 'cello' is up to date.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 프로그램을 실행합니다.
./cello
$ ./cello Hello World
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
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")
print("Hello World")
프로세스
pello.py
파일을 byte-compile합니다.python -m compileall pello.py
$ python -m compileall pello.py
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 바이트로 컴파일된 파일 버전이 생성되었는지 확인합니다.
ls __pycache__
$ ls __pycache__ pello.cpython-311.pyc
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력의 패키지 버전은 설치된 Python 버전에 따라 다를 수 있습니다.
pello.py
에서 프로그램을 실행합니다.python pello.py
$ python pello.py Hello World
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.3.2.2. 샘플 Bash 프로그램 원시 해석 링크 복사링크가 클립보드에 복사되었습니다!
Bash 쉘로 내장된 언어(llo)로 작성된 샘플
.
Hello World
프로그램에는 다음과 같은 내용이 있습니다
#!/bin/bash printf "Hello World\n"
#!/bin/bash
printf "Hello World\n"
벨로 파일의 상단에 있는 shebang (#!)
기호는 프로그래밍 언어 소스 코드의 일부가 아닙니다.
shebang 을 사용하여 텍스트 파일을 실행 파일로 전환합니다. 시스템 프로그램 로더는 shebang 이 포함된 행을 구문 분석하여 바이너리 실행 파일의 경로를 가져온 다음 프로그래밍 언어 인터프리터로 사용됩니다.
프로세스
소스 코드로 파일을 실행 가능하게 만듭니다.
chmod +x bello
$ chmod +x bello
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 생성된 파일을 실행합니다.
./bello
$ ./bello Hello World
Copy to Clipboard Copied! Toggle word wrap Toggle overflow