-g为了调试用的 加个-g 是为了gdb 用,不然gdb用不到 二、-o -o指定输出文件名 -o output_filename,确定输出文件的名称为output_filename,同时这个名称不能和源文件同名。如果不给出这个选项,gcc就给出预设的可执行文件a.out。 一般语法: gcc filename.c -o filename 上面的意思是如果你不打 -o filena...
在使用GCC编译器时,有三个选项-g、-o和-c具有特定含义。首先,"-g"(加上-g)是一个调试选项,它为GDB(GNU调试器)提供支持,使得在程序出错时能够方便地进行调试。若未指定此选项,GDB将无法充分利用程序的调试信息。"-o"(输出文件名)用于指定生成的可执行文件的名称。如果不使用这个选项,GC...
1:gcc可以用来编译C语言和C++:但是gcc只能链接C库,不能链接C++库; 2:g++可以链接C++库,但是它是通过调用gcc来编译,因此:它也可以编译C和C++,但它能编译的条件是要先存在gcc。 所以通常:如果只有C语言程序,就只要安装gcc即可搞定,因为它既可以编译C,也可以链接C库,所以可以最终生成二进制程序。 如果有C++程序,...
-c和-o都是gcc编译器的可选参数。-c表示只编译(compile)源文件但不链接,会把.c或.cc的c源程序编译成目标文件,一般是.o文件。-o用于指定输出(out)文件名。不用-o的话,一般会在当前文件夹下生成默认的a.out文件作为可执行程序。例如:gcc -c test.c将生成test.o的目标文件 gcc -o app t...
gcc -g demo.c -o dbme ./dbme #报错 #*** stack smashing detected ***: terminated #[1] 6119 abort (core dumped) ./dbme 1. 2. 3. 4. 5. 6. 下面使用gdb工具对程序调试,通过观察源代码大概就知道是index_m函数中数组越界了,那么我们需要查看两个数组的内容和两个数组的地址。
一般习惯上,目标文件都是以.o后缀。当然也没有硬性规定可执行文件不能用.o文件。这条命令没有错,但实际违反了基本的命名约定。!!! : 一般不要将可执行文件加.o文件后缀。.o文件后缀是中间目标代码obj文件的后缀名。另:-g是debug选项,会在编译时,将调试信息一起编译到最终文件中。
C程序的gcc和g++是两个常用的编译器,它们在编译C语言程序和C++语言程序时有一些性能差异。 gcc是GNU Compiler Collection的缩写,是一个广泛使用的开源编译器套件,支持多种编程语言,包括C、C++、Objective-C、Fortran等。它是C语言程序的主要编译器之一。
-g:在可执行文件中包含调试信息,以便GDB能够进行源代码级别的调试。 -tui:以文本用户界面(TUI)模式启动GDB,该模式提供了源代码窗口和调试器命令窗口。 -b:指定调试器使用的调试文件格式,如ELF、COFF等。 -ex:在启动GDB后立即执行指定的命令。 -core <core文件>:指定要调试的核心转储文件。
1. gcc -E 预处理/头文件展开/宏替换 2. gcc -S: 生成汇编指令 3. gcc - c: 生成二进制文件 4. gcc -I: (包含头文件) 5. gcc -o: 指定输出 6. gcc -D xxxx: 编译时传递宏 -D之前 -D之后 7. gcc -g: 用于gdb调试 8. gcc -Wall: 多警告 ...
-g 包含调试信息, 使用gdb调试需要添加-g参数 -On n=0∼3 编译优化,n越大优化得越多 例如:下面代码片段 int a = 10; int b = a; int c = b; printf("%d", c); 上面的代码可能会被编译器优化成: ...