linux动态库
2021/5/7 7:27:07
本文主要是介绍linux动态库,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
参考资料:
1.博客1:https://www.cnblogs.com/zuofaqi/p/10440754.html
2.博客2:https://blog.csdn.net/wangsiman/article/details/80031397
3.博客3:https://blog.csdn.net/chenzixun0/article/details/56278632
最近在做OTA相关工作,需要将不同架构(arm和x86)下的程序统一放到一个架构(arm)下进行统一管理。
涉及到的问题,不同程序有不同链接的动态库(xx.so),如何对一个ELF文件(linux下的可执行文件)进行正确的动态库链接?
记录:
1.看看操作系统的架构:
命令:uname -a
x86:
arm:
2.查看ELF文件本身和动态库链接情况:
file xx(文件名)
观察发现这个是在arm平台下编译出的(或者用的是arm平台下的编译器)
ldd xx(文件名)
观察发现又许多动态库没有链接,not found
3.找到开发这个程序的同事,问他要需要链接的库...
嗯,假装找到了!在xx路径下,比如/lib64下
关于怎么链接动态库网上有很多教程,这里只推荐用环境变量的方式,比较灵活,在程序运行的时候可以写脚本指定
export 查看当前的环境变量使用情况
观察发现没有LD_LIBRARY_PATH这个变量,这个变量即指定链接动态库的搜索路径
执行命令:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../../lib64
如果链接多个目录,用:分割,比如export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../../lib64:其他路径:...
然后export再执行会看到LD_LIBRARY_PATH已经出现了
执行命令:ldd xx(文件名)
刚刚未找到的动态库找到了,当然,你要使用正确的动态库和路径才行,这时候运行改elf文件应该问题不大了。
注意这种方法重启后需要重新指定环境变量LD_LIBRARY_PATH
PS:
1、unset LD_LIBRARY_PATH 这个命令可以重置环境变量,当然也可以不重置直接覆盖;
2、export 环境变量后,可以执行ldconfig -p打印出当前缓存文件所保存的所有共享库(动态库)的名字,看看刚刚添加的动态库有没有;
ldconfig 用法:https://blog.csdn.net/chenzixun0/article/details/56278632
这篇关于linux动态库的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23linux 系统宝塔查看网站访问的命令是什么?-icode9专业技术文章分享
- 2024-11-12如何创建可引导的 ESXi USB 安装介质 (macOS, Linux, Windows)
- 2024-11-08linux的 vi编辑器中搜索关键字有哪些常用的命令和技巧?-icode9专业技术文章分享
- 2024-11-08在 Linux 的 vi 或 vim 编辑器中什么命令可以直接跳到文件的结尾?-icode9专业技术文章分享
- 2024-10-22原生鸿蒙操作系统HarmonyOS NEXT(HarmonyOS 5)正式发布
- 2024-10-18操作系统入门教程:新手必看的基本操作指南
- 2024-10-18初学者必看:操作系统入门全攻略
- 2024-10-17操作系统入门教程:轻松掌握操作系统基础知识
- 2024-09-11Linux部署Scrapy学习:入门级指南
- 2024-09-11Linux部署Scrapy:入门级指南