linuxso文件
linux下的.so文件為共享庫,相當於windows下的dll文件,使用方法如下:
在你的工程源代碼里包含.h頭文件,然後可以調用動態庫里的函數,在鏈接的時候加上如下編譯器參數:
-l xx.so
如果你的so文件是以lib開頭的,還可以直接這樣使用:
-lxx
xx是你的.so文件名
其實使用方法和你使用數學庫函數是一樣的,源代碼中添加
#include <math.h>,編譯的時候,加上-lm參數。
㈡ linux so文件的全稱是什麼
so的全稱是shared object,即共享動態鏈接庫,
類似於windows下的dll文件。
㈢ linux生成文件中.so 文件和.out文件的區別
.so是二進制格式的鏈接庫文件,包含鏈接庫源文件(.c)中的各函數實現、調試信息等。
.out一般也是由gcc編譯生成的二進制格式文件,但有可能是執行程序也可能是鏈接庫文件,因為在linux中擴展名除了一些特殊的約定,一般情況下是無意義的。
執行文件也分動態鏈接還是靜態鏈接。大多數情況都是動態鏈接,裡面存放源文件(.c)中編譯後的二進制代碼及所調用函數庫的入口參數,靜態鏈接則是all-in-one,就是將所用到的非標准庫都打包到執行文件中,所以體積都較大。
㈣ linux so是什麼 文件
.so文件代表Linux的共享函數庫文件,程序運行時可能會使用到裡面的函數代碼。當一個程序需要.so共享函數庫文件時,系統自動會把它載入到內存中使用。相當於Windows系統裡面的dll動態鏈接庫文件。
㈤ linux中.so後綴的文件怎麼使用
在WINDOWS系統中有很多的動態鏈接庫(以.DLL為後綴的文件,DLL即Dynamic Link Library)。這種動態鏈接庫,和靜態函數庫不同,它裡面的函數並不是執行程序本身的一部分,而是根據執行程序需要按需裝入,同時其執行代碼可在多個 執行程序間共享,節省了空間,提高了效率,具備很高的靈活性。同樣,LINUX的也具備類似的動態鏈接庫,而且為數不少。在/lib目錄下,就有許多以.so作後綴的文件,這就是LINUX系統應用的動態鏈接庫,只不過與WINDOWS叫法不同,它叫so,即Shared Object,共享對象。(在LINUX下,靜態函數庫是以.a作後綴的) X-WINDOW作為LINUX下的標准圖形窗口界面,它本身就採用了很多的動態鏈接庫(在/usr/X11R6/lib目錄下),以方便程序間的共享, 節省佔用空間。flash只是一個插件,在windows中就是一個ocx的鏈接庫方式(和dll略有不同),因此linux中一旦你了一個共享函數庫,你還需要安裝它。其實簡單的方法就是拷貝 x0dx0a你的庫文件到指定的標準的目錄(例如/usr/lib),然後運行ldconfig。 x0dx0a如果你沒有許可權去做這件事情,例如你不能修改/usr/lib目錄,那麼 x0dx0a你就只好通過修改你的環境變數來實現這些函數庫的使用了。首先, x0dx0a你需要創建這些共享函數庫;然後,設置一些必須得符號鏈接,特別 x0dx0a是從soname到真正的函數庫文件的符號鏈接,簡單的方法就是運行ldconfig: x0dx0aldconfig -n directory_with_shared_libraries x0dx0a然後你就可以設置你的LD_LIBRARY_PATH這個環境變數,它是一個以逗號 x0dx0a分隔的路徑的集合,這個可以用來指明共享函數庫的搜索路徑。例如 x0dx0a,使用bash,就可以這樣來 x0dx0a啟動一個程序my_program: x0dx0aLD_LIBRARY_PATH=.LD_LIBRARY_PATH my_program
㈥ so格式文件是什麼文件
SO文件格式即ELF文件格式,它是Linux下可執行文件,共享庫文件和目標文件的統一格式。
根據看待ELF文件的不同方式,ELF文件可以分為鏈接視圖和裝載視圖。鏈接視圖是鏈接器從鏈接的角度看待靜態的ELF文件。
從鏈接視圖看ELF文件,ELF文件由多個section組成,不同的section擁有不同的名稱,許可權。而裝載視圖是操作系統從載入ELF文件到內存的角度看待動態的ELF文件。
從裝載視圖看ELF文件,ELF文件由多個segment,每一個segment都擁有不同的許可權,名稱。實際上,一個segment是對多個具有相同許可權的section的集合。
(6)linuxso文件擴展閱讀:
由於Android操作系統的底層基於Linux系統,所以SO文件可以運行在Android平台上。Android系統也同樣開放了C/C++介面供開發者開發Native程序。
由於基於虛擬機的編程語言JAVA更容易被人反編譯,因此越來越多的應用將其中的核心代碼以C/C++為編程語言,並且以SO文件的形式供上層JAVA代碼調用,以保證安全性。
而ELF頭表記錄了ELF文件的基本信息,包括魔數,目標文件類型(可執行文件,共享庫文件或者目標文件),文件的目標體系結構,程序入口地址(共享庫文件為此值為0),然後是section表大小和數目,程序頭表的大小和數目,分別對應的是鏈接視圖和裝載視圖。
㈦ 什麼是SO文件
so文件是Linux下的程序函數庫,即編譯好的可以供其他程序使用的代碼和數據。
㈧ linux上.so文件可以直接運行嗎
so文件不可以直接運行的,so文件是動態函數庫文件,函數庫文件(包括.a文件和.so文件)只能用來被調用運行,不能直接運行的,so文件就相當於Windows下的dll文件,dll文件就是不能直接運行的。
㈨ 如何查看 linux 下 so文件
方法一:
文件名已經帶有版本號:
這種情況下很容易就能夠看到軟鏈指向的文件的版本號是 1.0.1
方法二:
當文件名不帶版本號時:如下所示
使用readelf -a ***.so讀取出文件的版本號,不過此時只能讀取到主版本號,version:1
方法三:
如果文件名不帶版本號,且又想知道具體的版本號的時候怎麼辦呢?
這時候只能使用傻瓜方法,生成md5值與已知版本號的共享庫相對比了。
$ md5sum fcrypt.so.1.0.1
fcrypt.so.1.0.1
$ md5sum fcrypt.so
fcrypt.so
兩個md5值一致,由此得出版本應該是1.0.1。