Linux编译教程:将源文件编译为.o文件 (linux编译为.o文件)
在Linux系统下,编写并运行程序需要经过编译的过程。编译是将源文件转化为可执行的二进制代码的过程。在编译的过程中,源文件会被编译器处理成目标文件,也就是可执行的二进制代码。目标文件的文件格式不同于源文件,通常是用.o作为后缀名。
本文将详细介绍如何将 Linux 操作系统下的源文件编译成目标文件(.o 文件)。过程中将会涉及到 GNU 编译器,包括 gcc 和 g++。
1. 安装编译器
在 Linux 系统中默认已经安装了 GNU 编译器。但是如果您的系统上没有安装,可执行以下命令安装:
Ubuntu / Debian:
sudo apt-get install build-essential
Fedora:
sudo dnf install @development-tools
2. 创建源文件
使用您喜欢的文本编辑器创建一个 C++ 或者 C 语言源文件,比如:
#include
int mn() {
printf(“Hello World!\n”);
return 0;
}
将该源文件保存为“hello.cpp”或者“hello.c”。
3. 编译源文件
在 Linux 终端中进入到源文件所在的目录。然后使用以下命令编译源文件:
C:
gcc -c hello.c
C++:
g++ -c hello.cpp
这些命令包括以下部分:
– gcc 或 g++:编译器的名称。
– -c:只编译源文件,而不进行链接。
– hello.c 或 hello.cpp:源文件的名称。如果源文件不在当前目录下,则需在文件名前指定路径。
执行该命令后,会在当前目录下生成一个名为“hello.o”的目标文件。
4. 解释编译过程
编译过程的主要步骤:
1. 预处理:
在预处理阶段,编译器会将 include 指令和宏替换等预处理语句进行处理。
2. 编译:
编译阶段是将源代码转化为汇编代码。汇编代码是与计算机底层硬件架构密切相关的代码,因而会比高级语言代码贴近计算机硬件。
3. 汇编:
汇编阶段将汇编代码转化为机器代码。机器代码是可以直接由计算机执行的代码。
4. 链接:
链接阶段将多个目标文件链接成一个可执行文件。在链接过程中,如果有外部依赖库,则需要将外部依赖库链接到可执行文件中。
5. 额外操作:
在本例中,使用 -c 选项,只编译了源文件并生成了目标文件。如果需要将多个目标文件链接成可执行文件,使用以下命令链接:
C:
gcc hello.o -o hello
C++:
g++ hello.o -o hello
6. 运行程序
在终端中执行以下命令:
./hello
现在,你应该可以看到终端输出了“Hello World!”的语句。