静态库与动态库的对比及创建

静态库与动态库的对比及创建

静态库

是在可执行程序运行前就已经加入到代码中,成为执行程序的一部分;静态库可以认为是一些目标代码的集合。按照习惯,一般以“.a”作为文件后缀名。常用在对空间要求较低,对时间要求较高的核心程序中,例如操作系统的启动进程。

共享库

是在执行程序启动时加载到执行程序中,可以被多个执行程序共享使用。常用在对空间要求较高,对时间要求较低的核心程序中。


静态库会分别加载到每一个调用的地方,而动态库只会在调用时加载到内存里,用完后释放。因此使用静态库可以提高编译效率(随着编译器的发展,这个差距已经很小),但是会消耗更多的内存空间;使用动态库编译时更慢,但是使用更少的内存空间。

创建

静态库的创建

要创建一个静态库,或要将目标代码加入到已经存在的静态库中,可以使用以下命令:
ar rcs libmylib.a(库名必须以lib开头,后缀名必为.a) file1.o(库材料)

静态库制作步骤:
1、将.c文件生成.o文件

gcc -c file1.c -o file1.o
gcc -c file2.c -o file2.o

2、使用ar工具制作静态库

ar  rcs  lib库名.a  file1.o  file2.o

3、编译静态库到可执行文件中

gcc  test.c  lib库名.a  -o  a.out

动态库的创建

1、将.c文件生成.o文件(生成与位置无关的代码)

gcc -c file1.c -o file1.o -fPIC
gcc -c file2.c -o file2.o -fPIC

2、使用gcc -shared制作动态库

gcc -shared lib库名.so file1.o file2.o

3、编译可执行程序时,指定所使用的动态库。-l,指定库名 -L,指定库路径

gcc test.c -o a.out -l库名 -L./llib

4、运行可执行程序./a.out

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值