導航:首頁 > 文件目錄 > 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系統文件相關的資料

熱點內容
angularjsapi中文 瀏覽:405
怎麼在兩個表格里找出相同的數據 瀏覽:650
office2007診斷工具下載 瀏覽:598
傳文件用什麼軟體快點 瀏覽:924
連上otg後u盤顯示無文件 瀏覽:891
qq郵箱上怎樣發送文件夾里 瀏覽:248
如何用管理員許可權打開文件 瀏覽:587
js有二維數組嗎 瀏覽:594
熹妃q傳的網路什麼時候可以修好 瀏覽:165
key文件linux 瀏覽:990
java調用hessian 瀏覽:486
福建聚合網路公司怎麼樣 瀏覽:302
魅族手機備份文件夾 瀏覽:204
電腦c盤騰訊文件夾有什麼用 瀏覽:467
編程語言哪個最好就業 瀏覽:912
能不能找到cad之前打開的文件 瀏覽:259
怎樣設置文件夾許可權 瀏覽:60
oppo手機如何把圖片壓縮成文件 瀏覽:808
載入語言文件失敗 瀏覽:884
招聘plc編程屬於什麼職位類別 瀏覽:580

友情鏈接