• 正文
    • 1、GCC的安装
    • 2、GCC的编译选项
    • 3、GCC的基本使用
    • 4、GCC编译过程
  • 推荐器件
  • 相关推荐
申请入驻 产业图谱

常用编辑器之GCC编译器

2024/08/24
1367
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

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、GCC的基本使用

我们现在以我们学习语言的经典的hello.c的编译为例,对gcc的基本用法做一个了解。已编译hello.c文件为例。创建测试例程路径/home/elf/work/example/hello,在该路径下进行hello.c文件的编写、编译和运行。

elf@ubuntu:~/work/example/hello$ vim hello.c

测试例程内容如下:

#include<stdio.h>

int main(void)

{

printf("Hello World!n");

return 0;

}

用cd命令切换到hello文件夹下,通过gcc命令编译hello.c文件:

elf@ubuntu:~/work/example/hello$ gcc hello.c -o hello_ubuntu

可以看到,hello.c文件被编译成功,生成可执行文件hello_ubuntu,我们在终端运行./hello_ubuntu,可以看到输出结果和我们程序的要求一致。如果编译命令不添加-o hello_ubuntu,则编译完成生成的是a.out可执行文件,输出结果是一样的。

elf@ubuntu:~/work/example/hello$ gcc hello.c

4、GCC编译过程

GCC编译器的编译过程要经过预处理,编译,汇编,链接等4步才能够生成可执行文件。

预处理:主要实现将头文件展开,宏定义替换以及解析条件编译到文件中;

编译:将预处理的代码编译转换为汇编语言;

汇编:将汇编语言翻译成二进制文件;

链接:将汇编出来的多个二进制目标文件和库文件进行链接,生成可执行文件。

我们可以通过一个简单的hello.c程序的编译过程对GCC的整个编译过程有一个简单的了解。

1)预处理

elf@ubuntu:~/work/example/hello$ gcc -E hello.c -o hello.i

我们使用vim hello.i命令可以看到预处理文件有将近800行,预处理过程将一个不到10行的代码,生成了一个将近800行的预处理文件。

2)编译

这个过程是将hello.i预处理文件编译成hello.s文件。

elf@ubuntu:~/work/example/hello$ gcc -S hello.i

通过vim hello.s命令可以看到文件中都是汇编语句。

3)汇编

在终端输入gcc –c hello.s将汇编语句生成机器码,得到hello.o文件。

elf@ubuntu:~/work/example/hello$ gcc -c hello.s

4)链接

机器码不能够直接运行,我们通过链接得到可执行文件hello。

推荐器件

更多器件
器件型号 数量 器件厂商 器件描述 数据手册 ECAD模型 风险等级 参考价格 更多信息
NX5032GA-12.000M-STD-CSU-2 1 Nihon Dempa Kogyo Co Ltd Parallel - Fundamental Quartz Crystal, 12MHz Nom, ROHS COMPLIANT, SMALL, COMPACT PACKAGE-2
暂无数据 查看
FN2450046 1 Diodes Incorporated Oscillator, 1MHz Min, 166MHz Max, 24.575MHz Nom,
暂无数据 查看
HCPL2631SD 1 onsemi 8-Pin DIP Dual-Channel High Speed 10 MBit/s Logic Gate Output Optocoupler (Not recommend for new design. The new equivalent part number is HCPL26xxM), 1000-REEL
$1.73 查看
飞凌嵌入式

飞凌嵌入式

保定飞凌嵌入式技术有限公司,创建于2006年,是一家专注嵌入式核心控制系统研发、设计和生产的高新技术企业,是国内较早专业从事嵌入式技术的企业之一。 经过十几年的发展与积累,公司拥有业内优秀的软硬件研发团队,在北京及保定建立两大研发基地,在苏州、深圳设有华东、华南技术服务中心,并在北美、欧洲以及亚太等其他国家和地区拥有国际业务网络。公司研发的智能设备核心平台广泛应用于物联网、工控、轨道交通、医疗、电力、商业电子、智能家居、安防、机器人、环境监测等诸多领域。

保定飞凌嵌入式技术有限公司,创建于2006年,是一家专注嵌入式核心控制系统研发、设计和生产的高新技术企业,是国内较早专业从事嵌入式技术的企业之一。 经过十几年的发展与积累,公司拥有业内优秀的软硬件研发团队,在北京及保定建立两大研发基地,在苏州、深圳设有华东、华南技术服务中心,并在北美、欧洲以及亚太等其他国家和地区拥有国际业务网络。公司研发的智能设备核心平台广泛应用于物联网、工控、轨道交通、医疗、电力、商业电子、智能家居、安防、机器人、环境监测等诸多领域。收起

查看更多

相关推荐