|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
在实际的开发过程中,编写程序往往都需要依赖很多基础的底层库,比方说平时用的较多的标准C库,数学库等等;我们会频繁的使用这些库里的函数,这些函数大多数都是前人为我们写好的,所以值得庆幸的是我们的工作不必从零开始,我们要做的只是在恰当的位置调用合适的库函数去实现相应的功能,充分利用前人的劳动成果,就是“站在巨人的肩膀上”。本文主要简述Linux下库的制作以及使用方法。
# Q4 t, [& O+ P. R7 ~7 y3 L$ C& @. n4 e) Y! F% s2 \: Q( Q- R$ y' \
一、什么是库' k# Z: F7 C0 }& m" A
0 ` M- n$ a. d- J库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行。根据链接时期的不同,库又有:静态库和共享库(动态库)二者的不同点在于代码被载入的时刻不同。! T2 R; l# i7 H5 Z8 i
* y$ @4 G" D' Z$ |6 [9 H' E
静态库的代码在编译过程中已经被载入可执行程序,因此体积较大。- |3 z! b/ ~8 ]' b3 F& K
2 ~% m) u- g2 D. K7 \% |" [
共享库的代码是在可执行程序运行时才载入内存的,在编译过程中仅简单的引用,因此代码体积较小。- V7 n7 m" l6 w9 h& A7 m G0 J' a" r
2 [) C- c/ J( w# u
二、初识静态库与动态库3 |5 B2 |- F J4 {; B
2 S5 K9 B3 [' k0 o+ ~
1.静态函数库
1 A& Q! R$ Y& _8 P: `- H9 F) `+ [" B8 A, o' e' [. D
这类库的名字一般是libxxx.a,xxx为库的名字。利用静态函数库编译成的文件比较大,因为整个函数库的所有数据都会被整合进目标代码中,他的优点就显而易见了,即编译后的执行程序不需要外部的函数库支持,因为所有使用的函数都已经被编译进去了。当然这也会成为他的缺点,因为如果静态函数库改变了,那么你的程序必须重新编译。
: l# v5 w( ?! n0 ^
2 s Q1 t# @ k, v' P2.动态函数库 N- Z' t1 f0 E* U& o$ \
' R1 R, \4 A1 x$ c5 g
8 q; n* v* r3 m
+ Q/ s& } P' V1 q' Z8 R j
% R3 ?5 s1 } m8 ?4 {
! V1 o4 ~1 Y0 `. o" l# l4 G, x" {% {# n G3 O8 h+ q7 x& G( J6 l5 ]# k0 Q
$ m+ Q" n v0 g: V5 k* P
|
|