4.3. Building software from source
During the software building process, the source code is turned into software artifacts that you can package by using RPM.
4.3.1. Building software from natively compiled code 复制链接链接已复制到粘贴板!
You can build software written in a compiled language into an executable by using one of the following methods:
- Manual building
- Automated building
4.3.1.1. Manually building a sample C program 复制链接链接已复制到粘贴板!
You can use manual building to build software written in a compiled language.
A sample Hello World program written in C (cello.c) has the following contents:
#include <stdio.h>
int main(void) {
printf("Hello World\n");
return 0;
}
Procedure
Invoke the C compiler from the GNU Compiler Collection to compile the source code into binary:
$ gcc -g -o cello cello.cRun the resulting binary
cello:$ ./cello Hello World
Large-scale software commonly uses automated building. You can set up automated building by creating the Makefile file and then running the GNU make utility.
Procedure
Create the
Makefilefile with the following content in the same directory ascello.c:cello: gcc -g -o cello cello.c clean: rm celloNote that the lines under
cello:andclean:must begin with a tabulation character (tab).Build the software:
$ make make: 'cello' is up to date.Because a build is already available in the current directory, enter the
make cleancommand, and then enter themakecommand again:$ make clean rm cello $ make gcc -g -o cello cello.cNote that trying to build the program again at this point has no effect because the GNU
makesystem detects the existing binary:$ make make: 'cello' is up to date.Run the program:
$ ./cello Hello World
4.3.2. Interpreting source code 复制链接链接已复制到粘贴板!
You can convert the source code written in an interpreted programming language into machine code by using one of the following methods:
Byte-compiling
The procedure for byte-compiling software varies depending on the following factors:
- Programming language
- Language’s virtual machine
Tools and processes used with that language
注意You can byte-compile software written, for example, in Python. Python software intended for distribution is often byte-compiled, but not in the way described in this document. The described procedure aims not to conform to the community standards, but to be simple. For real-world Python guidelines, see Software Packaging and Distribution.
You can also raw-interpret Python source code. However, the byte-compiled version is faster. Therefore, RPM packagers prefer to package the byte-compiled version for distribution to end users.
Raw-interpreting
Software written in shell scripting languages, such as Bash, is always executed by raw-interpreting.
4.3.2.1. Byte-compiling a sample Python program 复制链接链接已复制到粘贴板!
By choosing byte-compiling over raw-interpreting of Python source code, you can create faster software.
A sample Hello World program written in the Python programming language (pello.py) has the following contents:
print("Hello World")
Procedure
Byte-compile the
pello.pyfile:$ python -m compileall pello.pyVerify that a byte-compiled version of the file is created:
$ ls __pycache__ pello.cpython-311.pycNote that the package version in the output might differ depending on which Python version is installed.
Run the program in
pello.py:$ python pello.py Hello World
4.3.2.2. Raw-interpreting a sample Bash program 复制链接链接已复制到粘贴板!
A sample Hello World program written in Bash shell built-in language (bello) has the following contents:
#!/bin/bash
printf "Hello World\n"
The shebang (#!) sign at the top of the bello file is not part of the programming language source code.
Use the shebang to turn a text file into an executable. The system program loader parses the line containing the shebang to get a path to the binary executable, which is then used as the programming language interpreter.
Procedure
Make the file with source code executable:
$ chmod +x belloRun the created file:
$ ./bello Hello World