2021-11-08配置库文件

嵌入式Linux开发工具

1、gcc编译器(静态库和动态库的制作与使用)
2、gdb调试器(常用命令,调用内存错误)
3、工程管理器make(makefile编写、多目录的Makefile的编写)
库文件:保存函数和变量,里面的函数和变量只能使用,但是看不到其实现
库函数:printf scanf strcpy strcat(保存在库文件)
extern:该函数在其他文件已经定义 通常放在.h文件里
库文件的分类:
静态库.a:保存的函数和变量,在编译阶段加载到可执行文件中
动态库.so:保存的函数和变量,在执行阶段加载到可执行文件中
面试题:
使用静态库和动态库的区别(生成的可执行文件的区别)
1、使用静态库编译出来的执行文件大小 > 使用动态库编译出来的执行文件大小(影响到内存的开销)
2、使用静态库编译出来的执行文件执行速度 > 使用动态库编译出来的执行文件执行速度(上课备书)
3、使用静态库编译出来的执行文升级 < 使用动态库编译出来的执行文件升级(qq安装与卸载)
4、使用静态库编译出来的执行文件程序部署 > 使用动态库编译出来的执行文件程序部署(鼠标位置)

库文件的存放路径:
系统运行所需要的库文件:/lib
第三方软件和工具运行所需要的库:/usr/lib /usr/local/arm/lib
编译时,gcc编译器会自动到这两个目录里找所需要链接的库文件
在这里插入图片描述

制作静态库:
1、将目标源文件编译成目标文件;
gcc -c 目标源文件(功能函数) (gcc -c add.c)
2、使用ar工具制作静态:ar -rcs(库不存在就创建,存在就更新)所要生成的库文件的名字(lib+库名+后缀.a) 目标文件
ar -rcs libadd.a add.o
![在这里插入图片描述](https://img-blog.csdnimg.cn/7287ea392999412190e7508d2b907c7a.png使用静态库:
-l:指定加载哪个静态库 (-l 库名)
-L:指定加载的库文件的存放路径
gcc 源文件 -l库名 -L库存放的路径在这里插入图片描述创建动态库:
gcc -shared -fPIC -o 库名.so 源文件.c
在这里插入图片描述

使用动态库:
gcc 源文件.c **./**库名.so -o 可执行文件
在这里插入图片描述

在这里插入图片描述

## gdb调试器:
gdb是GNU发布的一款功能强大的程序调试工具
GDB主要完成下面三个方面的功能:
1、启动被调试程序
2、让被调试的程序在指定的位置停住
3、当程序被停住时,可以检查程序状态-变量值
学习GDB的三步走:
在这里插入图片描述
在这里插入图片描述
list:查看程序源码
break:设置断点 break + 行号/函数名
n/next:下一步
quit:退出
gcc gdb_demo --tui:图形化界面
layout asm:显示汇编
layout src:显示源码
layout split:同时显示汇编和源码
info break:查看断点信息
continue:继续运行
delete +断点编号:删除
在这里插入图片描述disable:删除断点功能不删除断点
在这里插入图片描述
enable + 断点编号:使能

在这里插入图片描述
工程管理器make:
在这里插入图片描述touch makefile

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

在这里插入图片描述

在这里插入图片描述

命令前+@ :命令make后不显示
echo:打印(@echo make done!)
#:注释
$@:表示目标文件的名称,包含扩展名
$^:表示所有的依赖文件,以空格隔开,不重复
$<:表示第一个依赖文件的名称
$+:表示所有的依赖文件,空格隔开,可以重复
$*:表示目标文件的名称,不包含扩展名
$?:依赖项中,所有比目标文件新的依赖文件
在这里插入图片描述
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值