当前位置: 首页 > news >正文

动态链接库(.so)文件的变编译和引用、执行

动态链接库(.so)文件的变编译和引用

动态链接库:SO(Shared Object)是一种动态链接库,也被称为共享库。它是一种可被多个程序共享使用的二进制代码库,其中包含已编译的函数和代码。与静态链接库不同,动态链接库在程序运行时才会被加载到内存中,并且不会与程序的可执行文件一起打包。
使用动态链接库的优势在于,它可以被多个程序共享使用,从而减少了程序的内存使用和磁盘空间占用。此外,如果库中的函数发生了变化,只需要重新编译库文件即可,不需要重新编译所有程序。
在使用动态链接库时,需要将库文件的名称和路径添加到程序中,以便程序能够在运行时找到库文件。在Linux系统中,可以使用ldd命令查看程序所依赖的动态链接库,使用ldconfig命令更新动态链接库缓存。在编译程序时,可以使用编译器的-l和-L选项指定需要链接的库文件。

1.编译

动态链接库名字必须要以“lib”开头,如libtest.so.
-L源文件目录
-l动态链接库名字(去重lib、.so)

--sodir|--so.c|--s0.h|--libtest.sogcc main.c -o main -L/sodir -ltest #去重lib和.so;

2.引用、执行

直接执行main,会报错:cannot open shared object file: No such file or directory
解决方式:将动态链接库的目录设置到环境变量中。
1.临时性的 export 环境变量=$环境变量:你要添加的路径
2.写入/etc/profile
3.写入到家目录的.bashrc
4.写入到/etc/environment中

export LD_LIBRARY_PATH=$(pwd):
./main 
http://www.lryc.cn/news/16645.html

相关文章:

  • linux(centos8)文件解压命令
  • 阅读笔记6——通道混洗
  • 上海亚商投顾:沪指失守3300点 卫星导航概念全天强势
  • 疯狂的SOVA:Android银行木马“新标杆”
  • 汽车零部件企业数字工厂管理系统建设方案
  • 【线程同步工具】Semaphore源码解析
  • 获取实时天气
  • 【数据库】redis数据持久化
  • 前端编译、JIT编译、AOT编译
  • 父子组件中,子组件调用父组件的方法
  • 第七章.深度学习
  • 小学生学Arduino---------点阵(三)动态的显示与清除
  • opencv图片处理
  • C++ Primer Plus 学习笔记(二)—— 复合类型
  • 代码随想录算法训练营第七天 | 454.四数相加II 、 383. 赎金信、15. 三数之和、18. 四数之和 、总结
  • apply函数族
  • 读书笔记可读性素材
  • 【C++】vector 模拟实现
  • canvas初体验
  • JavaWeb12-线程通讯(线程等待和唤醒)
  • 江苏专转本如何事半功倍的备考
  • linux下安装mongoDB
  • 掌握MySQL分库分表(七)广播表、绑定表实战,水平分库+分表实现及之后的查询和删除操作
  • 企业为什么需要数据可视化报表
  • 5个有效的华为(HUAWEI)手机数据恢复方法
  • 【Java并发编程】线程安全(一)Synchronized原理
  • [apollo]vue3.x中apollo的使用
  • system()函数启用新进程占有原进程的文件描述符表的问题
  • nignx(安装,正反代理,安装tomcat设置反向代理,ip透传)
  • sklearn模块常用内容解析笔记