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

linux库动态库的生成与使用

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

场景:自己写的代码既不希望给别人看原码,但可以给你调用,这时就需要将代码打包变成库,库又分成静态库和动态库。 目录 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是编译后程序的名字。

然后给这个脚本可执行的权限直接运行

在这里插入图片描述

(编辑:淮北站长网)

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