Linux编译器-gcc/g++的使用

本文介绍了Linux环境下gcc/g++的编译过程,包括预处理、编译、汇编和链接四个阶段,并详细阐述了gcc/g++如何将.c/.cpp文件转化为可执行程序。此外,还探讨了Linux项目自动化构建工具make/Makefile的依赖关系、依赖方法、原理及应用,展示了利用make进行项目清理和测试的方法。
摘要由CSDN通过智能技术生成

★★★★★ 是小夏啊! 

        我们知道,当我们用像VS等这样的编译器写完代码后,会通过快捷键操作或是编译器上相应的选项来编译运行,紧接着我们一般通过控制面板来观察程序运行的结果,从而判断自己写的程序代码是否满足要求,进而对其进行Debug,修改代码直至输出达到预期目标。

        那么有这么几个值得我们思考的问题:VS等编译器是如何将程序代码转换成可执行程序的?在企业中广受喜爱的Linux操作系统下又是怎样的?对于Linux操作系统中gcc/g++是如何使用的?

目录

一、背景知识

1、预处理(头文件展开、去注释、条件编译、进行宏替换等)

2、编译(生成汇编,汇编语言也需要编译,也有汇编编译器)

3、汇编(生成机器可识别代码)

4、链接(生成可执行文件或库文件)

函数库 :(链接时涉及的重要概念)

函数库的分类 :

二、gcc实际操作中如何将.c文件转化成可执行程序

三、g++实际操作中如何将.cpp文件转化成可执行程序 

四、Linux项目自动化构建工具-make/Makefile

★ 依赖关系 

★ 依赖方法

★ 原理

★ 项目清理

★ 测试


一、背景知识

1、预处理(头文件展开、去注释、条件编译、进行宏替换等)

[xxp@VM-24-3-centos lesson1]$ gcc -E test.c -o test.i
[xxp@VM-24-3-centos lesson1]$ ls
install.sh  test.c  test.i

★ 预处理功能主要包括宏定义,文件包含,条件编译,去注释等。
★ 实例: gcc –E test.c –o test.i。
★ 选项“-E”,该选项的作用是让 gcc 在预处理结束后停止编译过程。
★ 选项“-o”是指目标文件,“.i”文件为已经过预处理的C原始程序。


2、编译(生成汇编,汇编语言也需要编译,也有汇编编译器)

[xxp@VM-24-3-centos lesson1]$ gcc -S test.i -o test.s
[xxp@VM-24-3-centos lesson1]$ ls
install.sh  test.c  test.i  test.s

★ 在这个阶段中,gcc 首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,      在检查无误后,gcc 把代码翻译成汇编语言。
★ 用户可以使用“-S”选项来进行查看,该选项只进行编译而不进行汇编,生成汇编代码。
★ 实例: gcc –S test.i –o test.s。

3、汇编(生成机器可识别代码)

[xxp@VM-24-3-centos lesson1]$ gcc -c test.s -o test.o
[xxp@VM-24-3-centos lesson1]$ ls
install.sh  test.c  test.i  test.o  test.s

★ 汇编阶段是把编译阶段生成的“.s”文件转成目标文件。
★ 读者在此可使用选项“-c”就可看到汇编代码已转化为“.o”的二进制目标代码了。
★ 实例: gcc –c test.s –o test.o。

4、链接(生成可执行文件或库文件)

[xxp@VM-24-3-centos lesson1]$ gcc test.o -o test
[xxp@VM-24-3-centos lesson1]$ ls
install.sh  test  test.c  test.i  test.o  test.s

★ 在成功编译之后,就进入了链接阶段。
★ 实例: gcc hello.o –o

评论 26
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值