ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Linux中静态库与动态库的制作与使用

2022-01-14 10:03:32  阅读:168  来源: 互联网

标签:函数库 静态 libxxx xxx so Linux 动态


静态库与动态库

静态函数库一般扩展名为.a或.lib,这类的函数库通常名为libxxx.a或xxx.lib。这类库在编译的时候会直接整合到目标程序中,所以利用静态函数库编译成的文件会比较大,这类函数库最大的优点就是编译成功的可执行文件可以独立运行,而不再需要向外部要求读取函数库的内容,但升级时如果函数库更新则需要重新编译。
动态函数库的扩展名一般为.so或.dll,这类函数库通常名为libxxx.so或xxx.dll 。与静态函数库被整个编译到程序中不同,动态函数库只有当可执行文件需要使用到函数库的机制时,程序才会去读取函数库来使用,也就是说可执行文件无法单独运行,这样方便升级,只要替换对应动态库即可,不必重新编译整个可执行文件。

静态库和动态库最本质的区别就是加载的时机,静态库在编译阶段就会加载到可执行文件中,而动态库会在执行阶段加载到可执行文件中。

操作步骤

  1. 编写静态库函数sta_fun.c、动态库函数dyn_fun.c、主函数main.c以及所需头文件
    在这里插入图片描述
    在这里插入图片描述
  2. 静态库的制作
    gcc -c xxx.c #将目标源文件xxx.c编译成目标文件xxx.o
    ar -rcs libxxx.a xxx.o #使用ar工具制作静态库libxxx.a
    在这里插入图片描述
  3. 动态库的制作
    gcc -shared -fPIC -o libxxx.so xxx.c #制作动态库libxxx.so
    在这里插入图片描述
  4. 库的使用
    gcc main.c -lxxx -L./dir/ #-l指定加载哪个库,-L指定加载的库文件的存放路径,dir就是libxxx.a文件的存放路径,默认只加载/usr/lib/中的库
    gcc main.c ./dir/libxxx.so -o main #使用动态库libxxx.so
    我这里将两个库同时使用,这样对于bat这文件夹来说,在不知道两个库文件源码的情况下,通过函数库的使用就完成了对应功能的调用,即提供了功能又保护了源码。
    在这里插入图片描述

标签:函数库,静态,libxxx,xxx,so,Linux,动态
来源: https://blog.csdn.net/qq_43686863/article/details/122484557

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有