编译器GCC使用
1.GCC概述:
GCC(GNU C Compile)经过长时间已经发展成是支持C语言C++,java等众多语言的编译器
gcc的编译流程分为四步:1.预处理(pre-processing), 2.编译(Compiling), 3.汇编(assembling). 4.链接(linking)
gcc 根据不同的后缀对他们程序进行分别处理,.c为C原始程序、.C/.cpp为C++语言程序,……
2.GCC编译分析:
gcc [option | filename] option:编译选项 filename:要编译的文件名
现在我们编写一个最简单的程序hello.c
#include <stdio.h>
#include <stdlib.h>
main()
{
printf("hello linux\n");
return 0;
}
运行
#gcc hello.c -o hello
#./hello
屏幕上将打印 hello linux
介绍一下常用的 常用的编译选项
-o out_filename :可以确定生成的可执行的文件的文件名(若没有则编译出来时默认为a.out可执行文件)
-c : 只编译,而不连接成可执行文件,只是有.c文件生成.o文件
-g: 产生调试工具所用的调试符号信息(如果所编译的程序想要调试就需要加-g)
-O, -O2,-O3: 优化编译连接 是执行的更迅速 -O的优化<-O2的优化<-O3的优化(不加是默认是-O)这个只在你的程序已经确定没有错误,可以发布时才去进行优化 平时就不用了
-staic 静态编译(这里我把用静态编译的生成文件叫hello1)我来来与hello作个比较
我们看到hello1要比hello大很多 用file看文件属性 看到一个是静态编译 一个是动态编译 静态编译时把所需的库添加在其中一起编译了 所以要大很多(在嵌入式开发中如果没有指定动态库 就要用-static来编译你的程序)
-l dir 指定头文件的位置
-L dir:知名文件库的路径
-lname: 编译时装载libname.a 的库函数
例如要用到数学函数库 就要用 gcc -lm hanshu.c -o hanshu //因为要用到libm.a的函数库
调试工具gdb使用:
1.gdb概述:
gdb也是有GNU发布的一款功能强大的程序调试工具
主要完成:
1.能运行程序,并设置运行的参数
2.能够使程序在某条件下停住
3.能够在程序停止调查程序状态
4.能够根据所设的参数改变程序的运行
2.gdb调试应用:
编写一个test.c文件
#include <stdio.h>
#include <stdlib.h>
main()
{
int t;
long result = 0;
for(i=1;i<100;i++)
{
result +=i;
}
printf("result = %d",result);
return 0;
}
首先要用 gcc-gtest.c -o test
产生一个可以调试的 test 可执行文件
(1).启动gdb:#gdb
test 或者 #gdb回车后加文件
(2).查看程序:list(l)
(3).设置断点: break(b) 行号--在制定行号添加断点 break(b) 函数名--在制定的函数入口设置断点 break(b) 行号 if 条件--当条件为真时断点生效 info--查询所有设置的断点 delete 编号--删除断点
(4).运行程序: run(r)
(5).单步运行: next(n)-->不会进入子函数 step(s)-->回进入子函数
(6).继续运行程序: continue(c)
(7).查看制定变量: print(p)变量名
(8).对制定变量进行监控: watch 变量名
(9).退出: quit(q)
忽然我的gdb 用不了 郁闷了 其实可以在程序中设置打印来调试 一样的
分享到:
相关推荐
Linux下CC++编译器gcc使用简介
交叉编译器gcc3.2.3制作,我自己做的,成功
Linux系统下C语言编译器GCC的使用
android gcc,g++,c/c++编译器和插件 内含说明书
古老的编译器gcc3.4
gcc编译器的中文手册,有详细的编译参数说明
GCC编译器套件(GNU Compiler Collection)包括C、C++、Objective-C、Fortran、Java、Ada和Go语言的前端,也包括了这些语言的库(如libstdc++、libgcj等等)。GCC原本作为GNU操作系统的官方编译器,现已被大多数类...
gcc编译器使用.pdf
Linux C++编程:编译器GCC简介.pdf
window 下的gcc编译器(gcc4.5.2)第二部分(注意共有2部分) 必须下载7z压缩软件解压
Linux系统下的gcc(GNU C Compiler)是GNU推出的功能强大、性能优越的多平台编译器,是GNU的代表作品之一。gcc是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一般的编译器相比平均效率要高20%~...
GCC(GNU Compiler Collection,GNU编译器套装),是一套由 GNU 开发的编程语言编译器。它是一套以 GPL 及 LGPL 许可证所发行的自由软件,也是 GNU计划 的关键部分,亦是自由的 类Unix 及苹果计算机 Mac OS X 操作...
linux下gcc编译器的使用 在为Linux开发应用程序时,绝大多数情况下使用的都是C语言,因此几乎每一 位Linux程序员面临的首要问题都是如何灵活运用C编译器。目前Linux下最常用的C语言编译器是GCC(GNU Compiler ...
linuxc编程:编译器gcc简介.docx
linux系统下C编译器GCC入门.docx
linux上的C-C++编译器gcc-egcs详解 使用GCC很有必要
实验3使用gcc编译器.pdf
linux gcc 编译器使用手册 英文版 4.5.0
GCC编译器 C语言 C++语言 预处理 GCC开关 全局开关用来控制在“GCC功能介绍”中的GCC的4个步骤的运行,在缺省的情况下,这4个步骤都是要执行的,但是当给定一些全局开关后,这些步骤就会在 某一步停止执行,这产生...
GCC编译器的源代码GCC编译器的源代码GCC编译器的源代码GCC编译器的源代码GCC编译器的源代码GCC编译器的源代码GCC编译器的源代码