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

Linux静态库和动态库的设计

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
" U3 R9 l0 K) D3 |  \9 u
静态库和动态库的设计

. d$ W) s# P' i
% u  G+ q' ?- r
2 j3 S' D& m& ~, S; J' }, QLinux应用程序设计中需要的外部函数主要由函数库和系统调用来提供* M1 `) x# i* Z5 X! a+ w) m% b

( v3 k2 ]& q. m5 H" |) m0 _1 \& ~
; E% _, c% O( M8 @
Linux应用程序使用的主要函数库均存放于/lib, /usr/lib目录下,其中采用*.so.*方式命名的是动态函数库,而以*.a方式命令的是静态函数库(空间占据大)
3 o. X2 P2 U: O( ~7 `5 [% u. ]7 U) u
2 [' r* f, |5 D3 ]) [, K0 {- }  }5 b
Linux下进行链接时 默认是链接动态库( g% C. @$ ?6 t

0 S$ G+ O$ z9 C9 [
4 p" R9 R! @" c% [
1、制作静态库
# t; p& o: B& Y+ v) _. U
6 o/ v% k+ P* {5 W+ k

8 E  b# r  Z- l       (1).gcc -c mylib.c -o mylib.o
) G1 a$ a1 Z; @* @2 j3 b. E. J/ U1 _0 ^
0 R" u6 o9 p; W7 {' O* M9 k
       (2).ar cqs libmylib.a mylib.o
9 e/ a4 c2 d2 V+ j5 X3 [. X* {
. V1 o7 u! u; K# j2 E
" p1 P; A$ c( z0 ~5 {  g, s
       (3).将制作好的libmylib.a复制到/usr/lib2 D- Q; G" n; b( z& E0 V
! h6 S8 }  ^0 E) z

$ g& k5 R% p: i6 E* B: f* `       (4).GCC在链接时,默认只会链接C函数库,而对于其他的函数库,则需要使用-l选项来显示地指明需要链接。例:gcc test.c –lmylib -o test
$ \5 W; ^  ]9 X  W% I! C- U& g+ V1 P  `

# w% u4 e* |3 c3 N  B0 _  c$ y   U; l3 x* j$ Y" l3 C7 q7 K
2、制作动态库
) a/ ~6 {( H7 f  d# ~* S
$ W+ V3 N* i+ z

, m3 T6 @1 h7 [: D5 x8 m       (1).gcc -c mylib.c -o mylib.o
4 l4 L5 _- i9 p6 S) r( `. `# |  G8 [- _: L

- P+ m8 B5 V. S9 c- ]6 N5 ]& g1 F       (2).ar -shared -fPIC mylib.o -olibmylib.so
; j" L3 @8 `8 \( X8 w, f, O# X8 Y' x: @. T) K
, }( j; e2 V% k" }% [) ~; I
       (3).将制作好的libmylib.so复制到/usr/lib! h) {+ ?( S; N# m, O
5 V! L8 v$ X4 v. I9 R) z' V" e# S
" W! ]+ F' E4 w. a# e5 l  ^
       -fpic 使输出的对象模块是按照可重定位地址方式生成的。2 F/ x& w. Q5 W' _

4 F9 |; d+ V/ i+ n  e

  d2 @5 d5 n" E, O2 L       -shared 指明产生动态链接库/ p1 L. k' o, J, F% W
' e4 a( s, {" L) ]

) T% C* w* J; b       (4).GCC在链接时,默认只会链接C函数库,而对于其他的函数库,则需要使用-l选项来显示地指明需要链接。例:gcc test.c –lmylib -o test
+ n/ V1 T" A/ b5 N8 D6 S
5 Z  k' R9 E3 @! y, G

8 U  |/ y+ k" _3 W( o, A. d
3 E% r( R8 H! f; [, Q) [+ S+ w  f) c6 P" p" Z% y

  g# Y" H$ {  o1 x+ q( k1 i9 M- }) X( a9 l' z

# o) \* f0 T- H4 j
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-25 01:41 , Processed in 0.171875 second(s), 23 queries , Gzip On.

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

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

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