备忘录

这里尤为重要,通常情况下是没有时间去看那么多的基础知识的,就只需要哪几个命令管用拿来用就好了。

有时候构建项目会遇到一些undeined symbol这样的错误。这里备忘一下用到命令和排错方式。

ldd [.so/.a/bin] # 查看link 的lib库有哪些( T 表示加载, U表示undefined symbol)
strings [.so/.a/bin] # 打印出二进制中的string,有时候可以用来看.so的version

objdump # 用来查看目标文件的构成,除非你懂目标文件的构成(section)那些不然一般用不上
nm # 显示目标文件中的符号,意味着可以看到一些全局变量之类的) 这个具体的说明看这个博客https://blog.csdn.net/K346K346/article/details/89088542

大致就是看代码,symbol是存放在哪个lib里的,然后用ldd看这个lib的位置,然后看一下时间戳和version 是不是正确的。

如果lib是自己项目编译出来的呢?

那么就是到编译目录下(build/)下面找.o文件,用objdump来看。具体的需要补充知识,后面多看一些编译方面的东西再来单开一篇知识文章补充这个东西吧。