有个.so(unix 动态链接库)文件,有办法可以查看它都提供什么样的函数或接口可以调用吗谢谢。

有个.so(unix 动态链接库)文件,有办法可以查看它都提供什么样的函数或接口可以调用吗谢谢。,第1张

nm 命令 可以看到符号表(不是所有库都包含这些信息,因为代码在执行的时候只用地址,这些信息是调试用的,正式的版权软件不一定包含这些),其中可以看到函数名,和变量名。但是具体传入参数的类型和其他信息,其实在标准C和C++在二进制库文件中是不包括这些信息的,进栈和出栈是在编译阶段决定的。

gdb 调试so所属应用程序的执行,看它的调用函数的传入和传出。

反编译可以获得一些信息,不过过程复杂,因为你要观察汇编代码和地址之间的跳转。如果你只是开发程序的话,获得完善的信息,你只能查看手册。

但是如果你是想用某个版权软件的某个so的功能的话只能反编译分析代码了。如果你具备反编译技能的话,应该不会问这个问题了。所以别伤脑筋了。你火候到了自然都有办法了。

如果借此以营利是违法的。

so文件是Linux so文件,是一种动态链接库文件,即一种可执行文件,它允许程序共享执行特殊任务所必需的代码和其他资源,相当于Windows系统中的dll,如果删除某so文件,则会导致手机某程序无法运行,so文件一一对应一个应用程序,电脑里也是这样,如果删除某dll文件,所对应的应用程序也将无法运行

只是叫你找到~/xine/catalogcache文件中[/usr/lib/xine/plugins/114/xineplug_decode_real_audioso]

这一行而已,不是叫你找到那个so文件~~

so文件是共享链接库文件,二进制的,打开全是乱码~~

这个是linux系统下的文件,你的手机应该是安卓平台,安卓平台是从linux内核的基础上发展过来的,所以会有后缀为so(shared object)的文件,当然这样解释不够精确、详细,肯定会被吐槽,具体如下:

准确地、详细地来说,

手机里面有硬件,也就是弱电学中的电路,电路组成了CPU和协助CPU的外围电路,

CPU上面移植了Linux内核,好,接下来就开始百花齐放了:

1、有的手机跑的是安卓的系统

2、有的时候跑的是linux系统

他们都基于Linux内核,对于Linux内核有不同的扩充,有的扩充成A系统,叫安卓,有的扩充成B系统,叫Linux,但是手机上,安卓相对linux,更加流行。

而Linux内核,并不是唯一的,有正统的,也有非正统的(不太常见而已),而Linux内核对应的CPU结构,也有很多种,因此不同的智能手机可能有不同的CPU、不同的Linux内核和不同的安卓系统(这个系统里包含了Linux内核)

当然还有跑windows的,扯远了,windows的手机,里面应该可以找dll文件,这个对应安卓系统的so文件。

还没讲so文件是干嘛的~

那为什么起个名字叫share object?

这个so文件,有时候是直接被调用的,有时候是会参与到编译中的,也就是说,一个so文件可能会被多个应用程序用到,因此取名叫share object(share:大家一起来分享使用的意思)。

这个就和windows里面一样,如果有时候百度下载了几个调用dll文件的软件,恰好电脑里面缺这几个dll,那么此时,这几个软件将不能运行,也就是说,这几个dll会被这几个软件在运行时都用到,有share的味道,所以在windows里面叫链接库,在Linux内核的系统上(可以是ubuntu啊、redhat啊,android等等)叫so(shared object),作用类似,windows中起名字更严肃点(链接文件,编译带上它,像一条链条一样),linux对它的起名更形象些(大家分享一起来用),意思差不多。当然区别肯定会有,这里只是回答得让读者大致理解,具体细节上的差别请另外百度。

so文件怎么运作的?(下面两个步骤摘自百度)

###########################################

①编译阶段。链接编辑器(linkeditor)拿它和其他Relocatableobjectfile以及其他sharedobjectfile作为输入,经链接处理后,生存另外的sharedobjectfile或者executablefile。

②运行阶段。动态链接器(dynamic linker)拿它和一个executable file以及另外一些 shared object file 来一起处理,在Linux系统里面创建一个进程映像。

这段话看起来比较抽象,如果想迅速理解它,建议读者百度找一个gcc/g++运行helloworld的例子就理解了.

###########################################

所以大家爱吐槽啊,这个C牌子的智能手机,怎么刷不了那个D牌手机 官方系统包啊?出来各种问题,有些问题是可以解决的,有些是解决不了的,甚至会有烧机的情况。

这类问题和底层的CPU种类、Linux内核种类及版本、so文件版本等都是相关的。

所以有些牌子的智能机有通吃现象,可以刷其他牌子的各种官方系统,有的智能机则不行。

总结:

CPU和PCB外围电路=>Linux内核+应用组件组成的安卓系统(用户层)=>对so文件和其他文件一起编译=>对so文件和其他文件一起运行=>创立进程、线程(也就是手机上的各种app和系统自带功能)=>然后我们就可以使用手机上的各种功能了。

最后,以上回答只是为了让读者有初步的、粗略的、大致的理解。任何专业名词和术语只要打了比方,就肯定是不绝对精确的。更详细的细节,请参考专业文献。

手机里面的so文件,如果是应用软件的,删除后,应用软件请重装,如果是系统自带的,请尽量不要删除。

抛砖引玉,答得不好,请别骂,谢谢!

-----------------------------------

补充:

评论中提到了FreeBSD,我来说下怎么回事:

*** 作系统=userland(用户层)+Linux内核

Android使用的是FreeBSD内核(其实是用户层,当然你也可以说他是内核)+Linux内核

Ubuntu使用的是GNU(用户层)+Linux内核

用户层啥意思:

我花了钱你不至于还让我看底层电路底层的010101吧?买来当然是为了王者农药对不?

通俗地讲:就是屏蔽底层细节,让客户买来直接用.

计算机里面为啥会有0和1

本质是电路中的高电平和低电平,举例:

05V->bit 1

01V->bit 0

才疏学浅,抛砖引玉,答得不好,请别骂,谢谢!

-----------------------------------

以上就是关于有个.so(unix 动态链接库)文件,有办法可以查看它都提供什么样的函数或接口可以调用吗谢谢。全部的内容,包括:有个.so(unix 动态链接库)文件,有办法可以查看它都提供什么样的函数或接口可以调用吗谢谢。、android rom /system/lib/ 中好多的.so库,每个.so具体是干什么用、.so文件怎么打开编辑阿等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9485892.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存