加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 钦州站长网 (https://www.0777zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

linux库动态库的生成与使用

发布时间:2022-11-15 10:47:28 所属栏目:Linux 来源:
导读:  场景:自己写的代码既不希望给别人看原码,但可以给你调用,这时就需要将代码打包变成库,库又分成静态库和动态库。 目录 1.动态库知识点 2.动态库的制作1.动态库知识点

  动态库的命名方式与静态库类似li
  场景:自己写的代码既不希望给别人看原码,但可以给你调用,这时就需要将代码打包变成库,库又分成静态库和动态库。 目录 1.动态库知识点 2.动态库的制作1.动态库知识点
 
  动态库的命名方式与静态库类似linux动态库,前缀相同,为“lib”,后缀变为“.so”。所以为“libfunc.so”
 
  动态函数库,是在程序执行时动态(临时)由目标程序去调用
 
  缺点: 运行慢
 
  发布程序需要提供依赖的动态库
 
  优点: 小
 
  程序升级简单,因为app里面没有库的源代码,升级之后只要库的名字不变,函数名以及参数不变,只是实现做了优化,就能加载成功
 
  2.动态库的制作
 
  gcc -shared -fpic xxx.c -o libxxx.so  //xxx为文件名 前面需要加lib
  例如:gcc -shared -fpic file2.c -o libxxx.so成立libxxx.so动态库
 
  -shared 指定生成动态库
 
  -fpic 标准,fPIC 选项作用于编译阶段,在生成目标文件时就得使用该选项,以生成位置无关的代码。
 
  3.动态库的使用
 
  当我们和静态库一样的编译方式生成可执行文件时
 
  gcc file1.c -lxxx -L ./ -O main
  会报错!!因为在运行过程中在优先默认的usr/lib/找不到动态库
 
  方法1:sudo cp libxxx.so /usr/lib/ 将库拷贝到 /usr/lib/
 
  再运行
 
  补充:sudo rm/usr/lib/libxxx.so (删掉动态库)
 
  方法2:如果要到当前目录路径找呢?(百度:引入动态库,怎么指定动态库的位置)
 
  1.输入pwd获取目前路径
 
  2
 
  export LD_LIBRARY_PATH="xxx" //xxx为pwd获取的路径
  3../main就运行程序了 (单一且只针对单一窗口)
 
  (方法2存在弊端和风险) 推荐方法3:
 
  写脚本 vi start.sh

  这里main是编译后程序的名字。
 

(编辑:PHP编程网 - 钦州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!