歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Linux下動態庫和靜態庫的生成和使用

Linux中有兩類函數庫,動態庫和靜態庫

靜態庫:

這類庫一般都是以.a為後綴名的文件,利用靜態庫函數編譯成的文件比較大,因為整個函數庫的所有數據都會被整合進目標代碼中。

編譯後的執行程序就不需要外部的函數庫支持,但也有其缺點,就是一旦靜態函數庫改變了,那麼程序就必須重新編譯。

動態庫:

這類庫的一般都是以.so為後綴名的,相對於靜態庫函數庫來說,動態函數庫在編譯的時候並沒有被編譯進目標代碼中。當程序執行到相關函數時才調用該函數庫裡的

相應函數,因此動態庫函數庫所產生的可執行文件比較小,由於函數庫沒有被整合到程序之中,所以這也就少了靜態庫鎖有的缺點。

Linux系統中的系統缺省庫有/lib    /usr/lib      /usr/local/lib

不管是何種庫文件,都是由.o文件生成的。

下面我就來講解下著兩種庫的生成方法及步驟:

動態庫:

對咬編譯生成庫的文件執行下面命令即可:

#gcc -shared funName.c -o libLibName.so

靜態庫:

#gcc -c funName.c

#ar cr libLibName.a funName.o

輕重funName.o是第一步生成的文件

Copyright © Linux教程網 All Rights Reserved