1. 程式人生 > >linux下的動態庫

linux下的動態庫

缺點 har clu main.c onf 才會 -o config bashrc

也就是windows下的.dll

1.命名

2.制作

(1)生成與位置無關的.o文件

gcc -fPIC -c *.c -I ../include

(2)將.o打包成動態庫(或者叫共享庫)

gcc -shared -o libmytest.so *.o -I ../include

3.發布和使用

(1)gcc main.c lib/libmytest.so -o app -I include

(2)gcc main.c -L ./lib -l mytest -o app

4.如何解決動態庫無法加載得問題

ldd //查看可執行程序依賴所有得庫

echo $PATH

--解決1:把該動態庫放入總目錄下得lib下(不建議這樣做,萬一與os相關得某個動態庫重名就尷尬了)

--解決2:把該庫制定該LD_LIBRARY_PATH這個環境變量(臨時用)

echo $LD_LIBRARY_PATH

賦值:export LD_LIBRARY_PATH=./lib

--解決3:打開家目錄下得.bashrc

G //光標移動到最後一行

加上export LD_LIBRARY_PATH=/home/itcast/3day/lib //動態庫得絕對路徑

關掉終端,然後才會生效

--解決4:

(1):需要找到動態鏈接器得配置文件

cd /etc

ls

ls -l ld.so.conf

sudo vi ld.so.conf

(2):動態庫的路徑寫到配置文件中

然後加上動態庫的絕對路徑

(3)更新:sudo ldconfig -v

5.優缺點

只有在程序執行的時候才會調用動態庫

優點:執行程序體積小,動態庫更新了不用重新編譯程序

缺點:需要把動態庫提供給用戶,加載速度慢

linux下的動態庫