① 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
才疏學淺,拋磚引玉,答得不好,請別罵,謝謝!
-----------------------------------
② so格式文件是什麼文件
SO文件格式即ELF文件格式,它是Linux下可執行文件,共享庫文件和目標文件的統一格式。
根據看待ELF文件的不同方式,ELF文件可以分為鏈接視圖和裝載視圖。鏈接視圖是鏈接器從鏈接的角度看待靜態的ELF文件。
從鏈接視圖看ELF文件,ELF文件由多個section組成,不同的section擁有不同的名稱,許可權。而裝載視圖是操作系統從載入ELF文件到內存的角度看待動態的ELF文件。
從裝載視圖看ELF文件,ELF文件由多個segment,每一個segment都擁有不同的許可權,名稱。實際上,一個segment是對多個具有相同許可權的section的集合。
(2)so是什麼文件可以刪除嗎擴展閱讀:
由於Android操作系統的底層基於Linux系統,所以SO文件可以運行在Android平台上。Android系統也同樣開放了C/C++介面供開發者開發Native程序。
由於基於虛擬機的編程語言JAVA更容易被人反編譯,因此越來越多的應用將其中的核心代碼以C/C++為編程語言,並且以SO文件的形式供上層JAVA代碼調用,以保證安全性。
而ELF頭表記錄了ELF文件的基本信息,包括魔數,目標文件類型(可執行文件,共享庫文件或者目標文件),文件的目標體系結構,程序入口地址(共享庫文件為此值為0),然後是section表大小和數目,程序頭表的大小和數目,分別對應的是鏈接視圖和裝載視圖。
③ 刪除system/lib中後綴為so的文件可以擴大手機可用運行內存嗎
這裡面的so文件不能隨意刪除,否則輕者軟體無法正常運行,重者無法開機。
④ king_so_f_t是什麼文件夾可以刪除
可以刪除,是安裝金山公司軟體的文件夾。
比如安裝有金山毒霸、金山辦公軟體時就會有該文件夾。該文件是可以刪除的,一般是通過卸載相應的軟體來完成。
在電腦上打開控制面板按鈕,找到程序以後點擊進入,進入卸載頁面以後,在軟體列表中找到金山毒霸,然後滑鼠右鍵金山毒霸選擇卸載。