g++和 gcc 的区别

gcc 可以判断出目标程序所使用编程语言的类别,会把 xxx.c 文件当作 C 语言编译,把 xxx.cpp 文件当作 C++语言编译。而 g++只把 xxx.c 和 xxx.cpp 一律都当作 C++语言来编译。

在编译 C++文件的时候,g++会自动链接一些标准库或基础库,而 gcc 不会。当正在编译的 C++代码文件依赖 STL 标准库的时候,为了使用 STL,gcc 命令需要增加参数–lstdc++。因此,虽然 gcc 和 g++都可以编译 C++语言程序,但是使用 g++会更方便一些。

但是g++相应的也会比gcc更加严格一些,比如说gcc编译会出现警告问题,但实际上换了g++这些警告就会变成相应的报错问题,所以很多情况下还是要挑选出满足条件、符合要求的编译器。

常见代码文件后缀名

(1)目标文件:

xxx.o, 操作系统:Linux, Mac

xxx.obj, 操作系统:windows

(2)二进制文件:

xxx(没有后缀名), 操作系统:Linux, Mac, FreeBSD,

xxx.exe, 操作系统:windows

xxx.hex,操作系统:嵌入式系统

(3)共享库文件,也叫动态库文件:

xxx.dll, 操作系统:windows

xxx.so, 操作系统:Linux

xxx.dylib, 操作系统:Mac

(4)静态库文件

xxx.a

C/C++语言的编译过程

1.预处理

预处理命令声明了编译时需要的各种头文件和宏,比如包含哪些头文件、宏定义的扩展、在哪个代码段做条件编译等。涉及预处理的语法有:#define,#include,#ifdef...#endif

2.编译

首先检查代码的规范性和语法错误等,检查完毕后把代码翻译成汇编语言,生成汇编语言文件

3.汇编

基于汇编语言文件生成二进制格式的目标文件

3.链接

将目标代码与所依赖的库文件进行关联或者组装,合成一个可执行文件

具体过程如图:

【回眸】嵌入式热知识帖(持续更新)-LMLPHP

12-21 07:36