linux的.so文件怎么来的


手机里面有硬件,也就是弱电学中的电路,电路组成了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。
这个就和windows里面一样,如果有时候百度下载了几个调用dll文件的软件,恰好电脑里面缺这几个dll,那么此时,这几个软件将不能运行,也就是说,这几个dll会被这几个软件在运行时都用到,有share的味道,所以在windows里面叫链接库,在Linux内核的系统上(可以是ubuntu啊、redhat啊,android等等)叫.so(shared object),作用类似,windows中起名字更严肃点,linux对它的起名更形象些,意思差不多。当然区别肯定会有,这里只是回答得让读者大致理解,具体差别请另外百度。
.so文件怎么运作的?(下面两个步骤摘自百度)
###########################################
①编译阶段。链接编辑器(link editor)拿它和其他Relocatable object file以及其他shared object file作为输入,经链接处理后,生存另外的 shared object file 或者 executable file。
②运行阶段。动态链接器(dynamic linker)拿它和一个executable file以及另外一些 shared object file 来一起处理,在Linux系统里面创建一个进程映像。
###########################################
所以大家爱吐槽啊,这个C牌子的智能手机,怎么刷不了那个D牌手机 官方系统包啊?出来各种问题,有些问题是可以解决的,有些是解决不了的,甚至会有烧机的情况。
这类问题和底层的CPU种类、Linux内核种类及版本、so文件版本等都是相关的。
所以有些牌子的智能机有通吃现象,可以刷其他牌子的各种官方系统,有的智能机则不行。

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

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

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

 

你可能感兴趣的:(linux的.so文件怎么来的)