什麼是SO檔案格式? 如何將SO開啟和轉檔?

帶有.SO副檔名的檔案是共享函式庫(Shared Library)檔案。它們包含一個或多個程式用來載入資源的資訊,因此,呼叫SO檔的應用程式不需要實際提供檔案。

例如,有一個SO檔可能包含關於如何快速搜尋整個電腦的資訊和功能。接著,有些程式可以呼叫這個檔案,在它們各自的程式中使用這個功能。

然而,不是把它編譯在程式本身的二進制碼中,而是把SO檔作為擴充功能,程式只需要呼叫就能使用它的功能。未來甚至可以更新/取代SO檔,而不需要變更那些程式本身的編譯。

共享函式庫檔案與Windows中使用的動態連結函式庫(DLL)檔案和macOS的Mach-O動態函式庫(DYLIB)檔案很相似,除了SO檔案是用於Linux和Android作業系統中。

SO不僅是指共享函式庫檔案。它也是伺服器選項(server options)、服務物件service object(一種程式碼)、系統超載(system overload)、唯送(send only)、系統中斷(system outage)、串列輸出(serial output),和固定開路(stuck open)的縮寫。但是,不要把它與作業系統的縮寫OS搞混了。

如何開啟SO檔?

SO檔案技術上可以使用GNU Compiler Collection來開啟,但是這類型的檔案目的不是為了用來瀏覽,或像其它檔案那樣使用它。相反的,它們只會放在適當的資料夾中,並透過Linux的動態連結載入器自動被程式使用。

但是,你或許也能夠在文字編輯器中把SO檔作為文字檔來讀取,例如,如果你是使用Linux,則可使用LeafpadgeditKWriteGeany,或是Windows上使用Notepad++。雖然它不太可能是人類能夠閱讀的文字格式。

 

如何轉換SO檔?

我們目前並不知道有任何程式可以把SO轉換成DLL在Windows上使用,而且考慮到這些檔案的目的與功能,不太可能有可以轉換的程式。把SO轉換成JAR或A (Stat Library檔案)等其他檔案格式也不是一件簡單的工作。

你或許能夠把SO檔案「轉換」成JAR檔案,只要將它們壓縮成像ZIP這樣的壓縮格式,然後把它重新命名為JAR。

 

仍然無法開啟SO檔案?

你無法開啟檔案的明顯原因,是因為它其實不是SO檔。它可能只是與SO檔有相同字母的副檔名。聽起來相似的副檔名並不一定代表檔案格式很相似,也不代表它們可以在相同的程式中使用。

例如,ISO檔是流行的格式,副檔名的字尾看起來與「.SO」非常像,但這兩者並無關連,且無法使用相同的程式開啟。

另一個例子是SOL檔案,它們是Flash Local Shared Object檔案。它們可以在現已消失的Adobe Flash中使用,且與SO檔案無關。

 

更多關於SO檔的資訊

共享函式庫檔案的名字稱為soname。它以「lib」開頭,接著是函式庫的名稱和.SO副檔名。部分的共享函式庫檔案在「.SO」之後也會附加其他數字,代表版本編號。

下列是常見的檔名例子:libdaemon.SO.14、libchromeXvMC.SO.0、libecal-1.2.SO.100、libgdata.SO.2和libgnome-bluetooth.SO.4.0.1。

結尾的數字讓相同的檔案可以有多種版本,而不會造成名稱重複的問題。這些檔案通常儲存於/lib/或/usr/lib/。

在Android裝置上,SO檔案是儲存於APK中的/lib/裡面。這裡的「ABI」的資料夾名稱可以是armeabi、armeabi-v7a、arm64-v8a、mips、mips64、x86或x86_64。與裝置相關的正確資料夾中的SO檔案,會在透過APK檔安裝應用程式時使用。

共享函式庫檔案有時稱為動態連結共享物件函式庫(dynamically linked shared object libraries)、共享物件(shared objects)、共享函式庫(shared libraries),以及共享物件函式庫(shared object libraries)。