嵌入式-UC(Unix系统高级编程)-2

UC学了有一阵子了,打算把笔记整理一下,发到网上,方便以后随时复盘,也供给大家拿去学习交流,希望不要收藏吃灰,要坚持学习,通过自己的努力,为这世界中你喜欢的方向添砖加瓦。

一、库

先说两个概念引入:

对于初学者,一般会把程序中所有功能全部实现于一个单一的源文件内部。这会导致编译时间长,不易于维护和升级,不易于协作开发,这属于单一模型。

将程序中的不同功能模块划分到不同的源文件中。缩短编译时间,易于维护和升级,易于协作开发,这属于分离模型。

1.静态库

静态库的本质就是将多个目标文件打包成一个文件

链接静态库就是将库中被调用的代码复制到调用模块中。

使用静态库的程序通常会占用较大的空间库中代码一旦修改,所有使用该库的程序必须重新链接 

使用静态库的程序在运行时无需依赖库,其执行效率高

静态库的命名形式:libxxx.a

构建静态库:ar -r libxxx.a  x.o y.o z.o

使用静态库:法一:gcc ... -lxxx -L<库路径>  

法二:export LIBRARY_PATH=<库路径>

2.动态库

动态库和静态库最大的不同就是,链接动态库并不需要将库中被调用的代码复制到调用模块中,相反被嵌入到调用模块中的仅仅是被调用代码在动态库中的相对地址

如果动态库中的代码同时为多个进程所用,动态库的实例在整个内存空间中仅需一份,因此动态库也叫共享库或共享对象(Shared Object, so)。

使用动态库的模块所占空间较小,即使修改了库中的代码,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值