ldd 如何确定依赖共享库的位置
来源:互联网 发布:淘宝店铺美工接单 编辑:程序博客网 时间:2024/05/19 14:37
程序需要用到其他Team写的库,更新新库(从Adfin_6.20141.3.20更新到Adfin_6.20152.6.20)后,执行程序报错:
symbol lookup error: undefined symbol: _ZN5Adfin10OpFunction15OpImpliedStrikeEddddRK11CFloatRangeS3_S3_RK9CAdStringS6_S6_Rd
#ldd debug/x86_64/ats
libadfapi.so => /ATSDev/ATS15/ATS15ENV/adfin/Adfin_6.20141.3.20/lib/x86_64/release/64/shared/libadfapi.so (0x00007f9219419000)
libadfcfo.so => /ATSDev/ATS15/ATS15ENV/adfin/Adfin_6.20141.3.20/lib/x86_64/release/64/shared/libadfcfo.so (0x00007f9218f2c000)
可以看到程序执行的时候找到的依赖库依然是Adfin_6.20141.3.20,两个版本的库对函数OpImpliedStrike的声明不同,所以,执行报错。
可是我在Makefile.host文件中已经做了更改,重新指定了动态共享库的路径
CC ... -L /ATSDev/ATS15/ATS15ENV/adfin/Adfin_6.20152.6.20/lib/x86_64/release/64/shared/
但是这个只能保证链接的时候,找到了正确的库文件,并且告知可执行文件依赖libadfapi.so和libadfcfo.so。
执行的时候,OS需要重新为可执行文件找动态库文件,去哪儿找呢?
环境变量LD_LIBRARY_PATH指定的路径
#echo $LD_LIBRARY_PATH
/ATSDev/ATS15/ATS15ENV/adfin/Adfin_6.20141.3.20/lib/x86_64/release/64/shared/
果然,OS在程序运行前,查找到在$LD_LIBRARY_PATH目录下有程序执行时依赖的同名库文件,所以,执行的时候,调用的还是旧的库文件。
重新设置环境变量LD_LIBRARY_PATH,指到新版本库文件的路径后,运行OK。
- ldd 如何确定依赖共享库的位置
- ldd--show可执行文件的所依赖的共享库
- ldd命令 查看程序所依赖的共享库。
- ldd 打印可执行文件依赖哪些共享库
- 用ldd运行可执行文件时打印共享库依赖
- ldd查看可执行程序的依赖库
- linux ldd 查看依赖的库文件
- 查看可执行文件依赖的动态库 ldd
- linux下查看对象文件依赖的动态库的工具ldd以及共享库缓存构建工具ldconfig介绍
- ldd 查看程序依赖库
- ldd 查看程序依赖库
- ldd命令查看动态库依赖的库
- ldd命令--查看命令依赖的库文件
- 查看某个库文件的依赖情况ldd命令
- 用ldd查看C++程序的依赖库
- Linux ldd -- 查看可执行文件所依赖的动态链接库
- ldd 查看可执行文件所依赖的库有哪些
- 查看程序依赖的sl:ldd
- ant,java构建工具
- iOS开发UI篇—懒加载
- Linux——常用命令详解
- NYOJ167 小珂的工作
- 内存管理(一):栈区、堆区,成员变量和局部变量,alloc,retain,自动释放池,成员变量及属性的内存管理
- ldd 如何确定依赖共享库的位置
- Android 文字竖排效果
- Ajax实例讲解与技术原理
- Swift学习笔记系列——(8)类和结构体
- 非静态的内部类会持有外部类的一个隐式引用 造成内存泄露
- 《How to become a hacker》(怎样成为一名黑客?)翻译(2)
- VS2012不再有添加样式规则选项
- Java线程:概念与原理
- 工厂模式