温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

symbol lookup error:: undefined symbol:

发布时间:2020-05-29 17:09:33 来源:网络 阅读:12931 作者:qdqade 栏目:编程语言

在运行可执行程序时,假定 可执行程序 proc

proc 依赖动态连接库 libtest.so 


libtest.so里面有 函数 func,


编译没错,执行出错

symbol lookup error:: undefined symbol: **func**


其可能原因是:连接的libtest.so不是最新的libtest.so,里面没有 func.


而造成没有 找到 最新libtest.so的原因 可能是 在libtest.so的搜索路径上有个旧的库


ps:

库在 搜索时,-ltest 会先在某A目录找.so,如果有.so,查找停止,如果没.so,在目录A找.a,如果找到则停止,都没有则 按照搜索路径 找后续目录B等.


-L./A -ltest_2 -L./B -ltest -ltest.so 

这里假定 test_2.a/.so 是第三方提供的库,依赖了test.so,且第三方提供了一个其依赖的test.so 版本。 则A目录(libtest_2.so,libtest.so)

B目录为自己编译的版本的 libtest_3.so库,其依赖 libtest.so 其自己提供了一个libtest.so

即B目录为(libtest_3.so,libtest.so)


在查找路径上 先找 A 目录,再找B目录,如果 A的test.so和B的test.so不兼容(B的比A的新),可能会出现

B中的test库中符号没找到的错误,

这是因为 实际找到的 是 A中的 test库






向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI