【Linux学习笔记(五)】之静态库与动态库的创建和使用

本文章由公号【开发小鸽】发布!欢迎关注!!!


老规矩–妹妹镇楼:

一.静态库

(一)概述

       相当于Windows中的xxx.lib文件,Linux中的静态库文件为libxxx.a文件。当我们需要向他人提供源码的功能,但又不想将源码分享,就可以只分享头文件和库文件。他人就可以通过头文件知晓如何使用库文件中的函数功能。

(二)制作步骤

       1. 将源码文件编译为.o文件,即二进制文件。

       2. 将.0文件打包,打包的命令为:

 ar rcs libxxx.a fil1.o file2.o…

       前面为静态库文件名,后面为库里添加的.o文件


       3. 将头文件和库文件一起发布

(三)查看静态库中的内容

       可以显示静态库包含的.0文件。

nm libxxx.a

(四)优缺点

1. 优点

       执行速度快,发布应用时不需要发布库。

2. 缺点

       执行程序体积比较大,因为库已经编译到代码中了,库变更后需要重新编译应用。

二.动态库

(一) 概述

       Linux的动态库命名规则为:libxxx.so,Windows中动态库文件为dll文件。

(二)制作步骤

       1. 编译与位置无关的代码,生成.o二进制文件,使用的参数是-fPIC

gcc -fPIC -c *.c -I ../include/

       2. 将.o文件打包,使用参数 -shared,生成动态库文件libxxx.so文件。
gcc -shared -o libxxx.so *.o

       3. 将库文件和头文件一起发布

(三)动态库无法加载的解决方法

       3种方法

       1. 拷贝到系统的库路径下:/lib,不推荐

       2. 将库路径添加到环境变量LD_LIBRARY_PATH中,用冒号分隔。推荐

       3. 修改/etc/Id.so.conf文件,添加库路径到该文件中,然后执行 sudo Idconfig -v

(四)优缺点

1. 优点

       执行程序体积小,库变更时,一般不需要重新编译应用。

2.缺点

       执行时要加载动态库,比静态库慢;发布应用时要同时发布动态库。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值