Linux下静态库和动态库的生成

1.何为静态库……何为动态库……?

Windows下:.dll 是动态库 .lib是静态库
Linux下: .so是动态库 .a是静态库

静态库:

在生成可执行程序的时候,会把函数的具体执行方式封装到程序中,程序体积比较大,只要能编译成功,就可以在任意相同的平台上运行

动态库:

在生成可执行程序的时候,只会把函数的接口封装到程序中,体积较小,在程序开始运行时,才调用函数的具体执行方式

2.具体生成方式

静态库:
<1> 生成 .o文件
  gcc -c fun.c (生成fun.o)
<2>生成静态库
  ar crs -o libfun.a fun.o
<3>链接
  gcc main.c -o main libfun.a
动态库:
<1>生成动态库 .o文件
  gcc -fPIC -c fun.c (生成fun.o)
<2>生成动态库
  gcc -fPIC -shared -o libfun.so fun.o
<3>链接
   gcc main.c -o main -I xx1 -L xx2 -lfun
注:xx1:头文件位置 xx2:库文件位置,-l后面是库名
  Linux系统默认链接的是动态库,当库名称一样时,需要用 -staic 指明静态库

链接出错:
  1.ldconfig 动态库路径
   2.将库文件复制到 /usr/bin 或 /lib目录下面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值