原创
记一次调用动态库报错的处理过程( undefined symbol)
最近工作在调用其他同事的一个动态库的时候发现有 未识别的错误 特此记录一下
首先我们用ldd查一下动态库连接是否有问题
可以看到有两个函数处于( undefined symbol),也就是未定义符号 ,其中这个 driver_register 是外部定义的,这个 __DEMO__ 是在这个动态库模块里面定义的 既然如此 找一下他在哪一行
这个红色的U代表"U" The symbol is undefinedundefined的 symbol 这种就是表示 在其他 so动态链接库里面定义的。但是如果你的编译的 是so文件,如果符号不在外部任何so文件里面,默认的配置也不会提示错误。而是编译通过。那个自己忘了定义的符号也在 这 undefined symbol里面,但是运行时就加载不成功了。
需要注意的是,如果找不到这个字符,考虑这个可能是一个宏定义,宏定义在编译的时候会被替换成源
常用的指令包括
ldd
mn
readelf
addr2line
作者: Bruce-Woo, 来源:面包板社区
链接: https://mbb.eet-china.com/blog/uid-me-1850657.html
版权声明:本文为博主原创,未经本人允许,禁止转载!
文章评论(0条评论)
登录后参与讨论