找回密码
 注册
关于网站域名变更的通知
查看: 267|回复: 1
打印 上一主题 下一主题

Linux静态库和动态库的设计

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-8-5 13:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x

- Y) `" T, j/ O0 e* h" R6 a% ~! g, o
静态库和动态库的设计

: J& j! P5 Y4 |. X+ u
+ B* M; ~9 D' h2 a* V' G0 E' L7 F. R% U- [7 r- b
Linux应用程序设计中需要的外部函数主要由函数库和系统调用来提供
- V, V: t  v6 r; k
2 M' v) d$ m& E" h) y

  v' M. h0 G& T" _Linux应用程序使用的主要函数库均存放于/lib, /usr/lib目录下,其中采用*.so.*方式命名的是动态函数库,而以*.a方式命令的是静态函数库(空间占据大)
& Q2 F, f! `( d- d1 D) u, k4 V) B$ x( g6 z+ E: J3 M4 r
' g; C, u2 s1 W# {. Z
Linux下进行链接时 默认是链接动态库
  w6 X- k' B. t. T0 S& p' h- d# {  F7 ?$ _. _  e
4 k/ [: `0 o/ P1 Z: K# P6 @3 t
1、制作静态库
: ~/ k& f+ X* l+ P: _; _% C9 v1 Q3 D2 V( r

: `& f. C" w8 B7 N3 D8 H  n3 t7 d       (1).gcc -c mylib.c -o mylib.o
6 ^) ]" ^! b0 E! O. |/ ?
/ f+ ]1 T/ M& S4 N1 f

- \, e9 p: ~  u. O; Q& Q6 j       (2).ar cqs libmylib.a mylib.o
" W8 y8 S. _/ k
$ x' ^$ V+ j+ z2 f% L/ d3 _
" j! e5 z2 _0 E2 a9 }+ Q! }
       (3).将制作好的libmylib.a复制到/usr/lib; i5 V1 x9 d  c# g" Q' k5 [
4 v# g/ i" S6 N2 |) @: M

. B, Z: }' e, }& ]( C5 Z       (4).GCC在链接时,默认只会链接C函数库,而对于其他的函数库,则需要使用-l选项来显示地指明需要链接。例:gcc test.c –lmylib -o test
& q* \! M( U  h, S+ c. V# ^6 S$ e! f& X$ ?4 ~

9 f' R' c8 [; C7 g+ M ( r! t/ s' T' P
2、制作动态库( u5 n# K8 ^; M( r) R: z( w. b, H

# K+ l6 J  M8 Q) _0 i% I, ?
5 l! K; V! f7 S  |
       (1).gcc -c mylib.c -o mylib.o
5 g# ]0 x' v5 N
- j8 D& @$ ^( R' |- e
* o& E) |. L0 J$ |
       (2).ar -shared -fPIC mylib.o -olibmylib.so8 p: {$ v0 t8 B3 T6 E+ @

" Z" T( P% L! X) L8 e

$ j! R: f3 G3 {; p9 l' [& ~' u       (3).将制作好的libmylib.so复制到/usr/lib
, h) k9 b+ D% v, ^. ?  L/ D- n( q" C3 |9 Q- B8 J0 n3 S# o

* ]: [) s! L1 h3 N4 H" I: h2 D0 ]       -fpic 使输出的对象模块是按照可重定位地址方式生成的。
8 h: |# g2 ?0 q. \0 W
; H5 c8 A) ^* o2 W; O9 Y( f: T

/ U# n$ q2 H" r: V4 B0 \+ c- v       -shared 指明产生动态链接库
' d% f/ E, T. Q4 \: Z4 |7 u* H/ `
* T) a1 i% R; w4 c9 I3 l& I/ u
& `9 S7 r# Z+ C- ^  _/ m5 H# N
       (4).GCC在链接时,默认只会链接C函数库,而对于其他的函数库,则需要使用-l选项来显示地指明需要链接。例:gcc test.c –lmylib -o test+ \% h3 ^& O- z0 p0 Q

$ w2 S" m& {/ O1 T  B6 M, P9 I

9 l& g( O, Y5 x0 G, C1 j; [$ ]7 z
2 q# S5 _! Q7 L0 R8 z$ D* l3 x
  Y: \9 i; m" }& {6 A) E

/ f6 L8 g  `3 F% ~7 G, p0 j0 k9 ~7 U0 H( O9 i! a1 _+ o; t' O
# z+ o9 Z8 M( p- g) b  |8 g* x+ U; G
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-24 23:54 , Processed in 0.156250 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表