在linux下使用gcc/g++编译.h .cpp文件 |
您所在的位置:网站首页 › afx头文件 › 在linux下使用gcc/g++编译.h .cpp文件 |
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 |