linux GCC、GDB、Makefile

来源:互联网 发布:苹果cms电影模板 编辑:程序博客网 时间:2024/05/14 07:10

 GCC,GDB和MAKE

    GCC 入门

    前面已经提到过,linux的发展离不开GNU计划,而GNU的贡献就在于推出了很多高质量的免费的软件。而其中的GNU(全称为:GNU C  Compiler)又是具有卓越贡献的软件。

 

GCC 的一般命令为 gcc [-选项1] 源文件名 [-选项2] 目标文件名

gcc      hello.c  -o   hello   直接一步编译到底

gcc  -E  hello.c  -o   hello.i    只进行预处理

gcc  -S  hello.i  -o   hello.s    只进行编译,产生汇编程序

gcc  -c   hello.s  -o   hello.o    只进行汇编

gcc      hello.o  -o  hello.exe   只进行链接

 

-o 的作用是指定文件名

另外选项1 如果是 -O 就是优化编译,编译后的程序效率会高一些。可以用命令 time ./hellol来查看一个可执行文件的执行时间

选项1 如果是 -static 就表明是静态链接。GCC默认是动态链接。 

选项1 如果是 -g  就表明产生GDB调试所必须的符号信息。

ldd hello.exe  查看所需要的库

 

GCC默认的头文件搜索路径为 : usr/include目录

GCC默认的链接文件搜索路径是:/usr/lib目录。为什么需要链接?比如像printf 这样的函数,在程序里面用到了,并且所包含的头文件里面只有该函数的声明而没有该函数的定义,所以就需要链接。库文件的后缀名为.a 的为静态链接库 .so的为动态链接库。Gcc默认为动态链接库。

 

GDB 入门

1:Gdb常用命令

List(l)  :查看程序

Break(b)  函数名/行号 : 设置断点

Info break  :打印所有断点

Delete 断点编号 :删除断点

Run(r) :全速运行执行程序,除非有断点

Continue(c):继续全速执行程序

Next(n) :单步运行程序,不进入子函数

Step(s) :单步执行程序,进入子函数

Print(p) 变量名:打印变量值

Quit(q)   退出

 

GNU Make

1) 地位:linux程序员必须学会gnu make来构建和管理自己的软件工程。GNU的make可以使整个软件工程的编译,链接只需要一个命令。

2) 语法:

A)目标:依赖

命令

B) 注意命令之前以tab键空

C) 对于没有依赖的目标,比如进行声明,用.PHONY例如:

   .PHONY  clean

   clean:

    rm ……

D)几个特殊的符号:$^ 代表所有的依赖;$< 代表第一个依赖文件 ;$@ 代表目标

 3)多源文件的Makefile实例

\

原创粉丝点击