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

Linux静态库和动态库的设计

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
2 ^# P; l3 j/ R6 Q" d0 W
静态库和动态库的设计

5 L( b, W' w9 D7 S! ~  e5 k
! ?6 I' m# h8 r5 I: j$ T2 A1 Q$ n  V8 d$ R% u" A
Linux应用程序设计中需要的外部函数主要由函数库和系统调用来提供* ?# {* F- L6 D7 H2 G: {! ?5 h
( y2 a; ~. e: v6 y

2 U1 \& }" Z5 }: nLinux应用程序使用的主要函数库均存放于/lib, /usr/lib目录下,其中采用*.so.*方式命名的是动态函数库,而以*.a方式命令的是静态函数库(空间占据大)
' f9 g, E! q" Y6 x, W# W* }
) O  B. E+ E# X  M2 X
# w. K& s# G0 j: b
Linux下进行链接时 默认是链接动态库( L& E# |; }* P% {1 |6 j* j7 w) ^

! \0 F: P1 }5 E6 ^
& M5 Q% @5 v) ?0 |* ~$ k9 \. J
1、制作静态库- n. L- d7 \+ ~$ F# U; h* h5 c- o

# g9 H" _5 G/ l  a; Z7 |
* V4 k  }3 h8 W, s1 t  z5 M
       (1).gcc -c mylib.c -o mylib.o3 ^: }  |) B/ T4 D/ \. y) f8 J: t% u
( ~6 x3 B/ b( Z8 \

+ Y8 u4 U- P# n  L% U0 V       (2).ar cqs libmylib.a mylib.o, ^& ?$ }( D  d4 V. }
, ^& F& K; N' r* q: s+ H0 a5 H" B

/ P( X% ^7 A5 ]$ U. ^6 V       (3).将制作好的libmylib.a复制到/usr/lib( L* v: k# Z5 m- x6 Y) j

  t' r7 w) O& z4 u  V5 Q: t

' f: m/ [: D$ h$ R" e       (4).GCC在链接时,默认只会链接C函数库,而对于其他的函数库,则需要使用-l选项来显示地指明需要链接。例:gcc test.c –lmylib -o test& w  E7 i8 q" U- K
& }! r/ s* @+ o5 u  u

! y5 O) f9 t- v$ k8 z9 Z: n
6 \% q9 _% y5 `. O, g6 r# ~2、制作动态库- b: i& q/ f& A: u: @/ y
6 [; [9 ]- J, u
6 x; w6 g# ~3 L0 X- I; G
       (1).gcc -c mylib.c -o mylib.o
+ j6 ?) T7 ^% U& Y: l" L. c9 W( D! Y6 j) f

8 s$ i4 m. P2 f6 @( @       (2).ar -shared -fPIC mylib.o -olibmylib.so
4 D& B% y# f" Y2 i4 o! @$ e% E' C9 f% W% @% O- H

: e$ R! Q+ H$ y" S& m' F       (3).将制作好的libmylib.so复制到/usr/lib
& C1 u$ T. O4 |) h/ n, d
7 `- C) D! V/ R4 u! F5 z6 S

8 E. |* l( F) l6 ^3 l  g8 h5 \0 ~       -fpic 使输出的对象模块是按照可重定位地址方式生成的。
8 g2 z3 I' P' Z1 z4 |, e* J# L1 n; m. C9 Q
: S  q2 f% |; g- n
       -shared 指明产生动态链接库
# ]0 ?3 y+ W) v2 f2 K* H  M  e. p$ j6 y3 n/ {+ U3 t; ^

4 x0 J5 U5 I( F& ^, ?' s4 `& M; p       (4).GCC在链接时,默认只会链接C函数库,而对于其他的函数库,则需要使用-l选项来显示地指明需要链接。例:gcc test.c –lmylib -o test
! q. u5 J' U4 c' Y* D) @
0 ^8 l$ J7 h+ h& n0 T1 n' F
; N) @, Q5 m+ g- m+ b
, F0 I$ j# g+ W7 I5 ]

. D/ w& v: B9 `& J7 N
6 P$ U7 E9 f4 J+ A! I/ y. K
3 {4 h! W9 e. \

& h* Z  v7 _- s6 B; N7 k, r7 j
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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