linux下的動態庫
阿新 • • 發佈:2019-01-05
缺點 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下的動態庫