发布网友 发布时间:2022-04-19 14:03
共5个回答
热心网友 时间:2022-06-01 23:50
展开3全部SO文件格式即ELF文件格式,它是Linux下可执行文件,共享库文件和目标文件的统一格式。
根据看待ELF文件的不同方式,ELF文件可以分为链接视图和装载视图。链接视图是链接器从链接的角度看待静态的ELF文件。
从链接视图看ELF文件,ELF文件由多个section组成,不同的section拥有不同的名称,权限。而装载视图是操作系统从加载ELF文件到内存的角度看待动态的ELF文件。
从装载视图看ELF文件,ELF文件由多个segment,每一个segment都拥有不同的权限,名称。实际上,一个segment是对多个具有相同权限的section的集合。
扩展资料:
由于Android操作系统的底层基于Linux系统,所以SO文件可以运行在Android平台上。Android系统也同样开放了C/C++接口供开发者开发Native程序。
由于基于虚拟机的编程语言JAVA更容易被人反编译,因此越来越多的应用将其中的核心代码以C/C++为编程语言,并且以SO文件的形式供上层JAVA代码调用,以保证安全性。
而ELF头表记录了ELF文件的基本信息,包括魔数,目标文件类型(可执行文件,共享库文件或者目标文件),文件的目标体系结构,程序入口地址(共享库文件为此值为0),然后是section表大小和数目,程序头表的大小和数目,分别对应的是链接视图和装载视图。
热心网友 时间:2022-06-01 23:50
这个是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?
本质是电路中的高电平和低电平,举例:
0.5V->bit 1
0.1V->bit 0
才疏学浅,抛砖引玉,答得不好,请别骂,谢谢!
-----------------------------------
热心网友 时间:2022-06-01 23:51
这是linux系统下的文件,手机安卓平台是从linux内核的基础上发展过来的,所以会有后缀为.so(shared object)的文件,具体如下:准确地、详细地来说,手机里面有硬件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。热心网友 时间:2022-06-01 23:51
“SO文件为主要与primarily Unknown Apple II File (found on Golden Orchard Apple II CD Rom)相关联的开发者文件 。SO文件还与以下相关联 Executable and Linkable Format File, UNIX Shared Library Function, TAPCIS Sysop Commands (Sysop Version Only), Oberlin DRAGN Graph Algorithm, Fortran 90 Shared Object 和FileViewPro.”热心网友 时间:2022-06-01 23:52
“SO文件格式即ELF文件格式,它是Linux下可执行文件,共享库文件和目标文件的统一格式。 ”