|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
在实际的开发过程中,编写程序往往都需要依赖很多基础的底层库,比方说平时用的较多的标准C库,数学库等等;我们会频繁的使用这些库里的函数,这些函数大多数都是前人为我们写好的,所以值得庆幸的是我们的工作不必从零开始,我们要做的只是在恰当的位置调用合适的库函数去实现相应的功能,充分利用前人的劳动成果,就是“站在巨人的肩膀上”。本文主要简述Linux下库的制作以及使用方法。5 O4 I( t- T( d! |- C! Y
1 x2 A* G- i2 D( H- X: }一、什么是库. M3 O, [/ { B" b. c; K
y0 t$ s3 w' w. g* d, P! u库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行。根据链接时期的不同,库又有:静态库和共享库(动态库)二者的不同点在于代码被载入的时刻不同。
; D# W- F; d; _' l! Z7 ~0 c# g" G, u% M- o7 Z$ r% Y% B
静态库的代码在编译过程中已经被载入可执行程序,因此体积较大。1 Q! ?: i- q( C9 u! M+ d
- t" y" j" L6 R; l: j! _ D8 P共享库的代码是在可执行程序运行时才载入内存的,在编译过程中仅简单的引用,因此代码体积较小。% g/ F1 H: Q. g8 D/ `. D8 d* b
; b8 y7 t( Q) M9 X4 k( u二、初识静态库与动态库
7 c( R# X3 B7 D N/ _" e4 ` c! L
1.静态函数库+ [2 T; O2 a8 e i( D
: E' u+ f h7 q/ O- H2 Y这类库的名字一般是libxxx.a,xxx为库的名字。利用静态函数库编译成的文件比较大,因为整个函数库的所有数据都会被整合进目标代码中,他的优点就显而易见了,即编译后的执行程序不需要外部的函数库支持,因为所有使用的函数都已经被编译进去了。当然这也会成为他的缺点,因为如果静态函数库改变了,那么你的程序必须重新编译。 c: F$ O% M- O
4 ]( K+ Q9 o0 R8 @5 u- I2.动态函数库
& f8 V: z0 ^/ d8 L& ~4 ^' Q
# U6 Y, D0 V0 o, N: `- G- I7 \4 v; G/ N
9 _' m. X+ h6 J, Y4 E* ~0 b' v. B. i; p; ~. e0 H
+ k& s0 e% v( `
8 x$ O) i" R8 e5 w) o
# m5 U" P- C; p- V |
|