靜態(tài)庫(kù)是在鏈接時(shí)被整體復(fù)制到可執(zhí)行文件中,而動(dòng)態(tài)庫(kù)是在運(yùn)行時(shí)被加載到內(nèi)存中,并且可以被多個(gè)程序共享使用。下面是動(dòng)態(tài)庫(kù)的創(chuàng)建與使用的步驟:
創(chuàng)建動(dòng)態(tài)庫(kù):
gcc -c -fPIC source.c -o source.o
。
-c
表示只編譯不鏈接,-fPIC
表示生成位置無(wú)關(guān)的代碼,用于動(dòng)態(tài)鏈接。gcc -shared source.o -o libsource.so
。
-shared
表示生成動(dòng)態(tài)庫(kù)文件。使用動(dòng)態(tài)庫(kù):
gcc main.c -L. -lsource -o main
。
-L.
表示在當(dāng)前目錄查找動(dòng)態(tài)庫(kù)文件,-lsource
表示鏈接名為 libsource.so
的動(dòng)態(tài)庫(kù)。./main
。注意事項(xiàng):
libname.so
,其中 name
是庫(kù)的名稱(chēng)。-L
選項(xiàng))和動(dòng)態(tài)庫(kù)的名稱(chēng)(使用 -l
選項(xiàng))。這是一個(gè)簡(jiǎn)單的動(dòng)態(tài)庫(kù)的創(chuàng)建與使用的示例,具體的操作可能會(huì)因?yàn)椴煌木幊陶Z(yǔ)言或操作系統(tǒng)而有所差異。