嵌入式学习9(Linux gcc gdb mkfile)

来源:互联网 发布:淘宝账号及密码免费送 编辑:程序博客网 时间:2024/05/21 08:01

GCC编译器


源文件-》预处理-》编译-》汇编-》链接-》可执行文件

预处理(–E):处理以#开头的语句,如#include #define 等,产生一个*.i的文件。

gcc -E -o zmx.i zmx.c   等价于 gcc zmx.c –E –o zmx.i                 

预编译(–S):检查语法错误,无误后,把代码翻译成汇编语言,产生*.s文件

             gcc -S -o zmx.s zmx.i

汇编(-c):将汇编文件转换成目标文件,产生*.o文件,它是二进制文件,但不可执行

             gcc -c -o zmx.o zmx.s

链接(-o):链接各种静态库和动态库,得到可执行文件。(一步到位,自动清除前面步骤)

            gcc -o star zmx.o

其他常用

                  gcc-o  生成指定的输出文件

                  gcc-v  查询gcc版本信息

                  gcc-g  生成调试信息,gdb调试器可以利用该信息

                  gcc-I  指定额外的头文件搜索路径

                  gcc-L  指定额外的函数库搜索路径

                  gcc-static 静态链接库,默认都是动态链接库

                  gcc-w      不生成任何警告信息

                  gcc-Wall   生成所有警告信息


GDB调试



first of all :在编译时,把调试信息加到可执行文件中

1、 进入(两种方式)

Ø  gdb  –》 file+文件名 -》q(quit)退出

Ø  gdb+文件名

2、 操作

3、 l(list):列出代码清单

b(break) n:在第n行设置断点 disable    n:禁用断点  delete   n:删除第几个断点

b   func:b+函数名,表在函数入口处设置断点

bt:查看函数堆栈

finish:退出函数

r(run) 执行

   c(continue):继续运行

   S :一步一步执行,进入函数

   n:单条语句执行,不进入函数

display   x:一直监察显示x的值

info   b:查看断点信息

   p   i:显示变量i的当前值

                                                                                                                           Makefile



Ø  语法为:

目标:依赖

                  命令

Ø  步骤:

vi makefile

     cmz:main.o func1.o

     <Tab> gcc –o cmz main.o func1.o

   

     main.o: main.c

     <Tab> gcc –c –o main.o main.c

 

     func1.o:func1.c

     <Tab>gcc –c –o func1.o func1.c

     

      clean:

         rm –rf *.o(刷新)

 

最后退出vi编辑器,在命令行输make即可

Ø  注意:执行是写法的逆序,

     写Tap的地方一定要用Tap(正确情况下目标是蓝色,依赖是黑色,命令是红色)


         饿~~~

原创粉丝点击