Linux 系统编程1

主要内容:
  1. GCC编译器
  2. GDB调试工具
  3. Make工具
    在这里插入图片描述

GCC编译器

1.GCC编译器介绍

GCC包含了预处理器、编译器、汇编器、链接器等组件。
输入文件的类型和传递给gcc的参数决定了gcc调用具体哪些组件。
在这里插入图片描述

2.GCC编译过程

一般情况下,C程序的编译过程是:

  1. 预处理 >>> 生成 test.i 文件
  2. 编译成汇编代码 >>> 编译得到 test.s 文件 (可读文本文件)
  3. 汇编成目标代码 >>> 汇编得到 test.o 文件(二进制文件)
  4. 链接 得到.o 文件
预处理

使用参数 -E
gcc -E -o gcctest.i gcctest.c
使用wc命令比较预处理后的文件与源文件,可以看到两个文件的差异。
在这里插入图片描述

编译成汇编代码

在这里插入图片描述

编译成目标代码

在这里插入图片描述

编译成可执行代码

在这里插入图片描述

3.GCC编译优化

-O0 -O1 -O2 -O3
在这里插入图片描述
在这里插入图片描述
在结果中,-O3不一定是优化最多的。

4.头文件和库函数目录

4.1 GCC -l dir参数的使用在这里插入图片描述

举例:
对于自定义头文件 my.h,不能使用 #include <my.h> 修改方法如下两种:
在这里插入图片描述

4.2 GCC创建函数库

静态库和动态库
静态库代码装载速度快,执行速度比动态链接库快。
在这里插入图片描述
静态库的生成与使用
在这里插入图片描述
在这里插入图片描述

动态库的生成与使用
在这里插入图片描述
在这里插入图片描述

GDB调试工具

在这里插入图片描述
GDB的命令
在这里插入图片描述
命令行输入 gdb 进入GDB中。

GDB命令的使用

1.gdb filename
在这里插入图片描述
file test

2.list
list 1,10 //显示1~10行
list 默认显示10行

3.回车符
重复执行上一条命令

4.help
返回gdb的命令提示信息

5.设置断点
b 1 //在第一行设置断点
break 1 //在第一行设置断点

6.info breakpoints
显示断点信息

7.clear
清除已经定义的断点
clear n //n表示断点行号

8.delete
删除指定/全部断点
delete 3 //删除编号为3的断点

9.print
输出断点处变量的值。
在这里插入图片描述
10.quit
退出gdb

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Make 工具

Make引入

在这里插入图片描述

Makefile文件

在这里插入图片描述
make
在这里插入图片描述
makefile
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值