自学内容网 自学内容网

gcc学习

理论

在使用 GCC (GNU Compiler Collection) 进行 C 或 C++ 程序的编译时,可以将整个过程分为四个主要阶段:预处理、编译、汇编和链接。下面是每个阶段的命令示例:

1. 预处理-E

预处理阶段会处理所有的预处理指令(如 #include#define),并生成一个中间文件。

gcc -E source.c -o source.i

2. 编译-S

编译阶段将预处理后的源代码转换为汇编语言。

gcc -S source.i -o source.s

3. 汇编-c

汇编阶段将汇编代码转换为机器代码,生成目标文件。

gcc -c source.s -o source.o

4. 链接

链接阶段将目标文件和所需的库链接在一起,生成可执行文件。

gcc source.o -o executable

综合命令

也可以使用一个简单的命令来完成所有步骤:

gcc source.c -o executable

这个命令会自动执行预处理、编译、汇编和链接。

选项说明

  • -E:仅进行预处理。
  • -S:生成汇编代码。
  • -c:生成目标文件而不进行链接。
  • -o:指定输出文件名。

这些命令可以根据需要进行组合和扩展,以适应不同的编译需求。

实验

~/Desktop/makefile-learning$ mkdir 01-Helloworld
~/Desktop/makefile-learning$ cd 01-Helloworld/
~/Desktop/makefile-learning/01-Helloworld$ code main.c
~/Desktop/makefile-learning/01-Helloworld$ gcc -E main.c -o main.i
~/Desktop/makefile-learning/01-Helloworld$ gcc -S main.i -o main.s
~/Desktop/makefile-learning/01-Helloworld$ gcc -c main.s -o main.o
~/Desktop/makefile-learning/01-Helloworld$ gcc main.o -o main
~/Desktop/makefile-learning/01-Helloworld$ ./main
Hello world

在这里插入图片描述

反汇编

反汇编是将机器代码转换回汇编语言的过程。使用 objdump 工具可以轻松完成这一操作。以下是一些基本的步骤和命令来反汇编可执行文件或目标文件。

使用 objdump 反汇编

  • 反汇编整个可执行文件:

    objdump -d my_program
    
  • 反汇编特定的目标文件:

    objdump -d my_program.o
    

实验

~/Desktop/makefile-learning/01-Helloworld$ objdump -d main

这里是直接在控制台输出了,也可以用>命令写入指定文件:

objdump -d main > main.objdump.txt

在这里插入图片描述

反汇编.o文件:

~/Desktop/makefile-learning/01-Helloworld$ objdump -d main.o 

原文地址:https://blog.csdn.net/beta___/article/details/142857267

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!