在linux环境实践,使用vim编写一个程序,然后使用gcc查看【预处理】、【编译】、【汇编】、【链接】各阶段文件的内容

本文介绍如何在Linux环境下创建并编译简单的C代码,包括使用vim编辑器编写代码、gcc命令进行编译的过程。此外,还详细解析了代码从预处理到链接的四个关键步骤。

我们先用vim命令创建一个zj.c编辑器


进入zj.c我们在编辑器里写入一段简单的c代码,其目的就是让它打印 hello bit!



输入完毕之后 esc并:wq退出编辑模式。然后使用gcc命令来编译我们这段代码 然后打印出hello bit!


这样 我们就成功在linux环境下编译了一段c代码!

在代码被编译的过程中,其实还会经历四个阶段:1.预处理 2.编译 3.汇编 4.链接。在linux环境下我们可以分别来研究这四个阶段

我们重新写一段代码来研究这些:


我们通过:gcc -E test.c -o test.i来对代码进行预处理。上图是预处理的结果


通过使用:gcc -S test.c来对代码进行编译。上图是编译后的结果。


使用gcc -c test.c 来对代码进行汇编,上图是代码汇编完的结果。



### 使用 Vim 编写 C 程序并用 GCC 编译以及 Objdump 反汇编 #### 1. 使用 Vim 编写 C 程序 Vim 是一种强大的文本编辑器,在 Linux 中广泛用于编写各种类型的源代码文件。要创建一个新的 C 文件,可以打开终端输入以下命令: ```bash vim hello.c ``` 这将在当前工作目录下创建一个名为 `hello.c` 的新文件。进入 Vim 后,可以通过按下 `i` 键切换到插入模式,并开始编写 C 程序。 例如,下面是一个简单的 Hello World 程序: ```c #include <stdio.h> int main() { printf("Hello, world!\n"); return 0; } ``` 保存并退出时按 `Esc` 键返回正常模式,然后键入 `:wq` 并回车即可保存更改并退出 Vim[^4]。 --- #### 2. 使用 GCC 编译 C 程序 在完成 C 程序编写之后,可以在终端中使用 GCC编译程序。假设已经安装了 GCC 工具链,则可以直接通过如下命令进行编译: ```bash gcc -o hello hello.c ``` 上述命令的作用是将 `hello.c` 源文件编译成可执行文件 `hello`。如果没有指定 `-o` 参数,默认生成的可执行文件名称为 `a.out`。 如果需要查看编译过程中的中间产物(如预处理输出汇编代码),可以分别使用以下选项: - 预处理阶段:`gcc -E hello.c -o hello.i` - 编译阶段:`gcc -S hello.i -o hello.s` - 汇编阶段:`gcc -c hello.s -o hello.o` 这些步骤展示了从源码到目标文件的具体流程。 --- #### 3. 使用 Objdump 对二进制文件进行反汇编 当成功生成可执行文件或者目标文件后,可以用 `objdump` 命令对其进行反汇编分析。以下是具体操作方法: 对于整个可执行文件的反汇编,可以运行以下命令: ```bash objdump -d hello ``` 此命令会显示已编译的目标代码及其对应的机器指令地址和操作数[^3]。 如果有兴趣只关注特定部分的内容,比如 `.text` 段(通常存储实际的程序逻辑),则可以加上额外过滤条件: ```bash objdump -D -j .text hello ``` 这里 `-D` 表示更详细的输出形式;而 `-j` 则限定仅展示某一段的信息。 --- #### 总结 综上所述,在 VMware 虚拟环境中利用 Vim 创建 C 源代码文件,借助 GCC 完成编译构建任务最后再运用 Objdump 实现对最终产物深入剖析的过程已被清晰描述出来。每一步都紧密关联着开发者的日常实践需求[^1][^2][^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值