导航:首页 > 文件目录 > SO系统文件

SO系统文件

发布时间:2023-05-19 20:43:15

A. 关于linux中的so文件

你知道windows下的dll文件吗???
其实和linux下的so文件是一回事,,so文件也版是编译好了的二进制的权链接库文件,,,
一般来说都是c或c++编译出来的,,java的话通常是用的字节码,也就是class文件。。
你自己写一个 helloworld的c程序,然后在命令行下用编译器编译gcc -c helloworld.c -o hello.o这样编译出来的结果就是那样的东西了。。这样的文件是不能直接运行的。。

B. 什么是SO文件

so文件是Linux下的程序函数库,即编译好的可以供其他程序使用的代码和数据。专

C. linux so是什么 文件

.so文件代表Linux的共享函数库文件,程序运行时可能会使用到里面的函数代码。当一个程序需要.so共享函数库文件时,系统自动会把它加载到内存中使用。相当于Windows系统里面的dll动态链接库文件。

D. so格式文件是什么文件

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

准确地、详细地来说,

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


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

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

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

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

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

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


还没讲so文件是干嘛的~


那为什么起个名字叫shareobject?

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

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

.so文件怎么运作的?(下面两个步骤摘自网络)

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

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

②运行阶段。动态链接器(dynamiclinker)拿它和一个executablefile以及另外一些sharedobjectfile来一起处理,在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


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

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

E. 什么是SO文件

SO文件是Linux下共享库文件,它的文件格式被称为ELF文件格式。由于Android操作系统的底层基于Linux系统,所以SO文件可以运行在Android平台上。

Android系统也同样开放了C/C++接口供开发者开发Native程序。由于基于虚拟机的编程语言JAVA更容易被人反编译,因此越来越多的应用将其中的核心代码以C/C++为编程语言,并且以SO文件的形式供上层JAVA代码调用,以保证安全性。

(5)SO系统文件扩展阅读:

so文件使用方法:

(1)动态库的编译。这里有一个头文件:so_test.h,三个.c文件:test_a.c、test_b.c、test_c.c,我们将这几个文件编译成一个动态库:libtest.so。

命令:$ gcc test_a.c test_b.c test_c.c -fPIC -shared -o libtest.so不用该标志外部程序无法连接。相当于一个可执行文件。

(2)动态库的链接这里有个程序源文件 test.c 与动态库 libtest.so 链接生成执行文件 test:命令:$ gcc test.c -L. -ltest -o test命令:$ ldd test执行test,可以看到它是如何调用动态库中的函数的。

参考资料来源:网络—SO(软件编程)

阅读全文

与SO系统文件相关的资料

热点内容
加工中心编程如何算重量 浏览:758
什么是机灵数据 浏览:724
ecshop配置文件 浏览:116
excel两个表格怎么对比相同数据 浏览:383
ps4港服文件怎么弄 浏览:560
苹果6splusnote5s6 浏览:426
定向流量30G都包括哪些APP 浏览:352
apple和瑶瑶综艺 浏览:351
打开word所在文件夹自动弹出 浏览:390
c怎么编程改名字 浏览:146
哪些电视剧app不带logo的 浏览:406
开机后桌面变黑色桌面文件丢失 浏览:136
网络电视怎么用遥控器 浏览:953
我的世界json打开失败 浏览:867
易语言56教程视频 浏览:610
linux开机启动文件 浏览:773
给宝宝唱儿歌用什么app 浏览:354
投标文件为什么要使用cad软件 浏览:522
一季度保险业务数据如何看 浏览:398
为什么行车记录仪文件大小为0 浏览:795

友情链接