编译器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]
现在我们编写一个最简单的程序hello.c
#include <stdio.h>
#include <stdlib.h>
main()
{
}
运行
#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概述:
2.gdb调试应用:
编写一个test.c文件
#include<stdio.h>
#include<stdlib.h>
main()
{
}
首先要用 gcc -g test.c -o test
产生一个可以调试的 test可执行文件
(1).启动gdb:
(2).查看程序:
(3).设置断点:
(4).运行程序:
(5).单步运行:
(6).继续运行程序:
(7).查看制定变量: print(p)变量名
(8).对制定变量进行监控:
(9).退出: