在linux下使用gcc/g++编译.h .cpp文件

您所在的位置:网站首页 afx头文件 在linux下使用gcc/g++编译.h .cpp文件

在linux下使用gcc/g++编译.h .cpp文件

2023-10-23 03:28| 来源: 网络整理| 查看: 265

1.gcc编译C源码的四个步骤:

预处理->编译->汇编->链接(test.c test.h => test.i => test.s => test.o => test)

1)预处理 gcc -E test.c  -o test.i

2)编译     gcc -S  test.i -o test.s

3)汇编     gcc -c  test.s -o test.o

4)链接     gcc test.o -o test

执行可执行文件test  ./test

注:c文件中的#include宏处理,会在预处理的阶段将c中引用的h文件的内容全部写到c文件中,最后生成.i中间文件,这时h 文件中的内容就相当于被写道c文件中。这也为代码的复用提供了渠道,很多的c文件可以去引用同一个h文件,这样这个h文件就会被放到多个c文件中被编译多 次,这也是h文件中不能放定义只能放声明的原因,放定义时被编译多次,在程序链接的时候(系统中定义了多个int a;强符号定义)会出现错误, 声明就不一样,声明表示对定义的扩展,最终都会终结到一个定义上,所以不会出现link时重复定义的错误。

2.gcc和g++的区别:

GCC:GNU Compiler Collection(GUN 编译器集合),它可以编译C、C++、JAV、Fortran、Pascal、Object-C等语言。

gcc是GCC中的GUN C Compiler(C 编译器)

g++是GCC中的GUN C++ Compiler(C++编译器)

由于编译器是可以更换的,所以gcc不仅仅可以编译C文件

所以,更准确的说法是:gcc调用了C compiler,而g++调用了C++ compiler

gcc和g++的主要区别:

1. 对于 *.c和*.cpp文件,gcc分别当做c和cpp文件编译(c和cpp的语法强度是不一样的)

2. 对于 *.c和*.cpp文件,g++则统一当做cpp文件编译

3. 使用g++编译文件时,g++会自动链接标准库STL,而gcc不会自动链接STL

4. gcc在编译C文件时,可使用的预定义宏是比较少的

5. gcc在编译cpp文件时/g++在编译c文件和cpp文件时(这时候gcc和g++调用的都是cpp文件的编译器),会加入一些额外的宏。

6.在用gcc编译c++文件时,为了能够使用STL,需要加参数 –lstdc++ ,但这并不代表 gcc –lstdc++ 和 g++等价,它们的区别不仅仅是这个。

3.多个文件编译在linux下编译:

例如:下面有三个文件,分别是1.cpp 和 2.cpp 和myhead.h 文件。

1.cpp

#include #include "myhead.h" using namespace std; int main(){ print(); cout


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3