Linux庫之動態庫、靜態庫

2020-08-10 15:39:24

Linux庫之動態庫、靜態庫

有關庫的詳情介紹:
https://www.cnblogs.com/sunsky303/p/7731911.html

https://blog.csdn.net/wk_bjut_edu_cn/article/details/81735956

1.庫的介紹:

在这里插入图片描述

2.靜態庫

靜態函數庫,是在程式執行前(編譯)就加入到目標程式中去了 ;
優點: 執行快
發佈程式無需提供靜態庫,因爲已經在app中,移植方便
缺點:大

在这里插入图片描述

3.動態庫

動態函數庫,是在程式執行時動態(臨時)由目標程式去呼叫

在这里插入图片描述

4.庫的製作

靜態庫的製作:格式xxxx.a
第一步:

gcc calcufuncs.c -c 生成xxx.o檔案碼片

第二步:

ar rcs libcalcufunc.a calcufuncs.o  xxx.o檔案生成xxx.a靜態庫檔案

動態庫的製作:

	gcc -shared -fpic calcufuncs.c -o libcalc.so

-shared 指定生成動態庫
-fpic 標準,fPIC 選項作用於編譯階段,在生成目標檔案時就得使用該選項,以生成位置無關的程式碼。

5.庫的使用

靜態庫:

gcc calculatorT.c -lcalcufunc -L ./ -o mainProStatic	

-lcalcufunc -l是制定要用的動態庫,庫名砍頭去尾
-L告訴gcc編譯器從-L制定的路徑去找靜態庫。預設是從/usr/lib /usr/local/lib去找

動態庫的使用和靜態庫一樣
帶動態庫的程式,可以指定該程式執行時候在" LD_LIBRARY_PATH "s\所指定的路徑去找庫

export  LD_LIBRARY_PATH = "/home/pi/back/test"
                           自己指定路徑