美文网首页
制作及使用静态库和共享库

制作及使用静态库和共享库

作者: 温暖春阳 | 来源:发表于2018-03-30 22:45 被阅读14次

静态库

制作

  1. 编译为 .o 文件
  2. 将.o文件 打包: ar rcs libmycalc.a file1.o file2.o file3.o ...
第一步、编译
~/Calc/src$ gcc -c *.c  -I ../include/
第二步、打包
~/Calc/src$ ar rsc libCalc.a *.o
第三步、移动
~/Calc/src$ mv libCalc.a ../lib
第四步、编译
~/Calc$ gcc main.c -o app -I include/ -L lib/ -lCalc
第五步、执行
nm libCalc.a查看文件内容
  1. 将头文件与库一起发布

使用

编译时 需要加静态库名(记得路径),-I 包含头文件

优缺点总结

优点:

  1. 执行快
  2. 发布应用时不需要发布库

缺点:

  1. 执行程序体积会比较大
  2. 库变更时需要重新编译应用

动态库

制作步骤

  1. 编译与位置无关的代码,生成.o,关键参数 -fPIC
  2. 将.o文件打包:关键参数 -shared
  3. 将库与头文件一起发布

使用

-L 指定动态库路径 -l指定库名

gcc -o newapp main.c -L ./lib -lmycalc -I ./include/

解决不能加载动态库的问题

  1. 拷贝到 /lib下--- 不允许
cd /lib
cd usr/lib
  1. 将库路径增加到环境变量 LD_LIBRARY_PATH中,不是特别推荐
将库所在的路径,添加到环境变量中,用冒号分割
  1. 配置 /etc/ld.so.conf 文件,增加 /home/itcast/backup/cmd/Calc/lib 路径,步骤如下
1. sudo vi /etc/lb.so.conf(配置文件)
2. /home/itcast/backup/cmd/Calc/lib (添加文件绝对路径)
3. sudo ldconfig -v(更新)这只是一次性的

优缺点总结

缺点:

  1. 执行时需要加载动态库,相对而言,比静态库慢
  2. 发布应用时需要同时发布动态库

优点:

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

相关文章

  • 制作及使用静态库和共享库

    静态库 制作 编译为 .o 文件 将.o文件 打包: ar rcs libmycalc.a file1.o fi...

  • iOS开发中静态库制作 之.a静态库制作及使用篇

    iOS开发中静态库之".a静态库"的制作及使用篇 一.库的简介 1.什么是库? 库是程序代码的集合,是共享程序代码...

  • ios中静态库.a的制作

    在ios中制作静态库之前,先来了解关于静态库的一些概念。 八、静态库和动态库在使用上的区别。静态库:链接时,静态库...

  • ios中静态库.a的制作和使用

    在ios中制作静态库之前,先来了解关于静态库的一些概念。 八、静态库和动态库在使用上的区别。静态库:链接时,静态库...

  • Linux链接库

    动态链接库(共享链接库) 杂项 生成.o文件 生成.so 使用动态库 静态链接库 杂项 生成.a 查看.a 使用静态库

  • XCode12制作Swift和OC混编静态库

    在本篇文章中主要来记录使用Xcode12来制作静态库的过程,及出现的问题。静态库分为两种.framework文件和...

  • iOS小知识 -- 静态库(一)

    静态库静态库的介绍.a静态库的制作以及测试静态库的架构问题.framework静态库的制作以及测试边开发边制作静态...

  • iOS打包framework

    上面一节我们讲述了制作静态库和使用静态库.现在我们就学习制作动态库framework. 1.首先创建工程. 点击创...

  • iOS静态库和动态库浅析

    一、库 库是共享程序代码的方式,一般分为静态库和动态库。 二、静态库和动态库 静态库形式:.a和.framewor...

  • 11-静态库的制作

    本着尊重原作者的态度,关于静态库及动态库的制作,请参考jianshu 本篇文章主要是制作静态库以及动态库的方法 一...

网友评论

      本文标题:制作及使用静态库和共享库

      本文链接:https://www.haomeiwen.com/subject/jiswcftx.html