linux GCC GDB make 编程及命令
GCC编程
linux 系统下的GCC是GNU推出的功能强大、性能优越的平台编译器,是GNU的代表作之一。
GCC编译器能将C、C++语言源程序、汇编程序编译、连接成可执行文件,在linux系统中,可执行文件没有后缀,系统从文件的属性来区分可执行文件和不可执行文件。
使用GCC编译程序时,编译过程可以分为四个阶段:
*编译(compiling)
*汇编(assembling)
*连接(lingking)
GCC通过后缀来区别输入文件的类别:
*.c -------: C语言源代码文件
*.a-------:
*.C,.cc或.cxx-----:
*.h------:
*.i------:
*.ii-----: 是已经处理过的C++源代码文件
*.o-----:
*.s-----:
*.S----:
基本用法
gcc最基本的用法是::
options : 编译器所需要的编辑选项
filename: 要编译的文件名
gcc编译器中最常用的参数有
* -o output_filename :
* -c :
*-g :产生调试工具(GNU的gdb)所必须的符号信息,要相对编译出的程序进行调试,就必须加入这个.3选项。
*-o : 对程序进行优化编译、连接,采用这个选项,整个代码会在编译、连接过程中进行优化处理,这样产生的课执行效率可以更高,但是时间就要花费更多。
*-o2 : 比-o更好的优化编译、连接,当然整个编译、连接过程会更慢。
例程:optimize.c
输入:gcc optimize.c –o optimize
C程序中头文件包含两种情况:
#include”B.h”
Idirname:将dirname所指的目录加入到程序头文件目录列表中,
例:::
Ldirname :
-Wall : 生成所有警告信息
-w :
-DMACRO : 定义MACRO宏,等效于程序中使用#define MACRO
GDB调试
GDB是GNU发布的一款功能强大的程序调试工具。主要功能:
1、
2、
3、
运行程序:
输入 next
输入continue 连续执行到最后。
GDB命令
l
l
l
l
l
l
l
l
l
l
l
l
l
l
l
GNU make
Linux 程序员 必须学会使用GNU make来构建和管理自己的软件工程。GNU的make能够使整个软件工程的编译、连接只需要一个命令就可以完成
makefile
make 在执行时,需要一个命令为makefile的文件。makefile文件描述了整个工程的编译,连接等规则。其中包括:工程中的那些源文件需要编译以及如何编译,需要创建那些库文件以及如何创建,如何产生最后我们想要的可执行文件。
makefile(术语)
规则:用于说明如何生成一个或多个目标文件,(规则灰常重要)
targets:prerequisites
command
例:main.o:main.c
*****命令需要以tab键开始*******
在 makefile中,规则的顺序是很重要的,因为,makefile中只应该有一个最终目标,其他的目标都是被这个目标连带出来的,所以一定要让makefile知道你的最终目标是神马, 一般来说,定义在makefile中的目标可能会有很多,但是第一条规则中的目标被却定位最终目标
make命令默认在当前目录下寻找名字为makefile或者makefile的工程文件,当名字部位这两者之一时,可以使用如下方法指定:
伪目标:
Makefile 中 把那些没有任何依赖只有执行动作的目标称为“伪目标”(phony targets)
例:
“.PHONY”将“clean”目标声明为伪目标
变量
hello:main.o func1.o func2.o
gcc main.o func1.o func2.o –o hello
思考::若要为hello目标添加一个依赖,如:func3.o ,该如何修改
答案1:
gcc main.o func1.o func2.o
答案2::
在makefile中,存在系统默认的自动化变量
*$^---------代表所有的依赖文件
*$@-------代表目标
*$<--------代表第一个依赖文件
makefile中“#”字符后的内容被注释掉
@:取消回显