古詩詞大全網 - 古詩大全 - Linux下的靜態庫和動態庫

Linux下的靜態庫和動態庫

靜態庫

可以把它想象成是壹些代碼的集合,在可執行程序運行前就已經加到了代碼中,成為了執行程序的壹部分,壹般是以.a為後綴的文件名,Windows下後綴為.lib。靜態庫的命名也分為三部分,1、前綴:lib,2、庫的名稱:隨意,如lisi,3、後綴:.a。

靜態庫優缺點

上面簡單介紹了靜態庫,那它自然也會有優缺點,這裏來介紹下它的優缺點。

優點:1、在最後,函數庫是被打包到應用程序中的,實現函數本地化、尋址方便、高效。2、程序在運行的時候,與函數庫沒有關系,移植性更強。

缺點:1、消耗資源較大,每個進程在使用靜態庫的時候,都要復制壹份才可以,這也就造成了內存的消耗。2、在程序更新、部署、發布的時候,使用靜態庫相對麻煩,如果壹個靜態庫更新了,那它的應用程序都需要重新編譯,再發送給用戶,有的時候可能只是壹個小的改動,但對於用戶來說,會導致整個程序重新下載。

動態庫

在程序編譯時不會被連接到目標代碼中,在後期運行時才會載入,不同的應用程序如果調用相同的庫,內存中只有壹份***享庫的拷貝,也就避免了空間的浪費問題。壹般以.so作為文件後綴名,也分為三部分:1、前綴:lib,2、庫名稱:自定義,3、後綴:.so

動態庫優缺點

優點:1、節省內存2、部署、升級相對方便,只需要更換動態庫,再重新啟動服務即可。

缺點:1、加載速度比靜態庫慢2、移植性較差,需要把所有用到的動態庫進行移植。