在代码编译阶段(第二个阶段),后缀为 .c 的,gcc 把它当作是 C 程序,而 g++ 当作是 C++ 程序;后缀为 .cpp 的,两者都会认为是 C++ 程序,C++ 的语法规则更加严谨一些;g++会调用 gcc,对于 C++ 代码,两者是等价的, 也就是说 gcc 和 g++ 都可以编译 C/C++ 代码。 在链接阶段(最后一个阶段),gcc 和 g++...
GCC的全称是GNU Compiler Collection,是GNU工具链中的一种。GCC不仅支持C/C++语言,还支持Fortran/Ada/Java等语言的编译。 GCC和gcc是两个概念,GCC是工具链的集合,里面除了gcc/g++还包含了ccl,cclplus等组件。gcc/g++只是GCC工具链的一个子集。 二,g++和gcc的区别 gcc可以判断出目标程序所使用编程语言的类别,会...
加个-g 是为了gdb 用,不然gdb用不到 二、-o -o指定输出文件名 -o output_filename,确定输出文件的名称为output_filename,同时这个名称不能和源文件同名。如果不给出这个选项,gcc就给出预设的可执行文件a.out。 一般语法: gcc filename.c -o filename 上面的意思是如果你不打 -o filename(直接gcc filen...
编译可以用 gcc 或 g++,而链接可以用 g++ 或者 gcc-lstdc++。 因为gcc 命令不能自动和 C++ 库链接,所以通常使用 g++ 来完成链接。 但在编译阶段,g++ 会自动调用 gcc,二者等价。 在编译阶段,g++会调用gcc,对于c++代码,两者是等价的,但是因为gcc命令不能自动和C++程序使用的库联接,所以通常用g++来完成链接,为了...
gcc/g++编译c文件 首先说预处理和汇编,从g++ == gcc -xc++ -lstdc++ -shared-libgcc,能看出来,g++只针对编译和链接做了调整,但对预处理和汇编而言,g++与gcc是完全等价的。其次,如果编译的是.cpp文件,gcc会自动按照.cpp的标准也就是c++的标准进行编译;如果编译的是.c文件,在没有涉及一些不规范语法的情况下...
在使用GCC编译器时,有三个选项-g、-o和-c具有特定含义。首先,"-g"(加上-g)是一个调试选项,它为GDB(GNU调试器)提供支持,使得在程序出错时能够方便地进行调试。若未指定此选项,GDB将无法充分利用程序的调试信息。"-o"(输出文件名)用于指定生成的可执行文件的名称。如果不使用这个选项,...
在C/C++开发中,g++和gcc是GNU编译器集合的重要组成部分,通过了解它们的区别,开发者可以更好地选择合适的工具,提高开发效率和代码质量。 1.基本定义 gcc(GNU Compiler Collection)是一个编译器集合,最初是为C语言设计的,但现在它已经扩展支持包括C++、Fortran、Ada、Go、D等多种编程语言。**g++**是gcc的一部分,...
1.3 gcc常用选项 GCC的常见选项: -c:只编译源代码,生成目标文件(xx.o)而不进行链接。 -E:只进行预处理,生成预处理后的源代码文件。 -O:优化生成的代码,可以使用-O1、-O2或-O3进行不同级别的优化(是大写字母O)。 -g:生成调试信息,以便进行源代码级调试。
gcc在编译cpp文件时/g++在编译c文件和cpp文件时(这时候gcc和g++调用的都是cpp文件的编译器),会加入一些额外的宏,这些宏如下: #define__GXX_WEAK__ 1#define__cplusplus 1#define__DEPRECATED 1#define__GNUG__ 4#define__EXCEPTIONS 1#define__private_extern__ extern ...
扩展选项(gcc/g++) -E 只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里面 -S 编译到汇编语言不进行汇编和链接 -c 编译到目标代码 -o 文件输出到 文件 -static 此选项对生成的文件采用静态链接 -g 生成调试信息。GNU调试器可利用该信息。 -shared 此选项将尽量使用动态库,所以生成文件比较小,...