查看: 1336|回复: 0

[经验] 常用编辑器之GCC编译器

[复制链接]

该用户从未签到

发表于 2024-8-24 11:53:42 | 显示全部楼层 |阅读模式
分享到:
GCC(GNU Compiler Collection)是由GNU开发的编程语言编译器,最初是作为GNU操作系统的编译器编写的。GCC是一个编译器套件,包含很多软件包,支持多种语言编译。GCC的官网是http://gcc.gnu.org
1、GCC的安装
Ubuntu默认安装了GCC,但软件包可能不全,为了确保有一个基本完善的本地编译环境,可安装build-essential软件包。在确保Linux能联网的情况下,在终端输入如下安装命令:
elf@ubuntu:~$ sudo apt-get install build-essential
也可以通过简单的命令安装gcc:
elf@ubuntu:~$ sudo apt install gcc
2、GCC的编译选项
GCC的基本用法是:gcc [选项] 文件名
GCC有很多编译控制选项,使得GCC可以根据不同的参数进行不同的编译处理,我们简单介绍一些常用的基本控制选项。
3-1.png
3、GCC的基本使用
我们现在以我们学习语言的经典的hello.c的编译为例,对gcc的基本用法做一个了解。已编译hello.c文件为例。创建测试例程路径/home/elf/work/example/hello,在该路径下进行hello.c文件的编写、编译和运行。
elf@ubuntu:~/work/example/hello$ vim hello.c
测试例程内容如下:
  1. #include<stdio.h>

  2. int main(void)

  3. {

  4.         printf("Hello World!\n");

  5.         return 0;

  6. }
复制代码
用cd命令切换到hello文件夹下,通过gcc命令编译hello.c文件:
elf@ubuntu:~/work/example/hello$ gcc hello.c -o hello_ubuntu
3-2.png
可以看到,hello.c文件被编译成功,生成可执行文件hello_ubuntu,我们在终端运行./hello_ubuntu,可以看到输出结果和我们程序的要求一致。如果编译命令不添加-o hello_ubuntu,则编译完成生成的是a.out可执行文件,输出结果是一样的。
elf@ubuntu:~/work/example/hello$ gcc hello.c
3-3.png
4、GCC编译过程
GCC编译器的编译过程要经过预处理,编译,汇编,链接等4步才能够生成可执行文件。
预处理:主要实现将头文件展开,宏定义替换以及解析条件编译到文件中;
编译:将预处理的代码编译转换为汇编语言;
汇编:将汇编语言翻译成二进制文件;
链接:将汇编出来的多个二进制目标文件和库文件进行链接,生成可执行文件。
我们可以通过一个简单的hello.c程序的编译过程对GCC的整个编译过程有一个简单的了解。
3-11.png
1)预处理
elf@ubuntu:~/work/example/hello$ gcc -E hello.c -o hello.i
3-4.png
我们使用vim hello.i命令可以看到预处理文件有将近800行,预处理过程将一个不到10行的代码,生成了一个将近800行的预处理文件。
3-5.png
3-6.png
2)编译
这个过程是将hello.i预处理文件编译成hello.s文件。
elf@ubuntu:~/work/example/hello$ gcc -S hello.i
3-7.png
通过vim hello.s命令可以看到文件中都是汇编语句。
3-8.png
3)汇编
在终端输入gcc –c hello.s将汇编语句生成机器码,得到hello.o文件。
elf@ubuntu:~/work/example/hello$ gcc -c hello.s
3-9.png
4)链接
机器码不能够直接运行,我们通过链接得到可执行文件hello。
3-10.png

回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /4 下一条



手机版|小黑屋|与非网

GMT+8, 2024-12-18 23:43 , Processed in 0.112936 second(s), 17 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.