動態庫和靜態庫的製作和使用

靜態庫的製作和使用步驟:
1、生成.o文件,將.o文件移到相應文件夾中
2、執行命令 ar rcs libCalc.a .o(可將.o文件一個個列出代替.o)
3、生成的libCalc.a文件即靜態庫
在這裏插入圖片描述
使用bc命令(quit退出),計算.o文件之和小於libCalc.a的大小
在這裏插入圖片描述
在這裏插入圖片描述
gcc編譯main.c,-o命名爲app,-I include/src 鏈接.h頭文件,-L lib/ -lCalc 鏈接靜態庫
在這裏插入圖片描述
動態庫的製作和使用步驟:
1、用gcc -fPIC -c *.c -I …/include/命令生成.o文件
在這裏插入圖片描述
在這裏插入圖片描述
2、用gcc -shared -o libCalc.so *.o 命令生成動態庫
在這裏插入圖片描述
3、將動態庫移到lib文件夾下
在這裏插入圖片描述
4、用gcc main.c -o newapp -I include/src -L lib/ -lCalc生成newapp可執行文件
在這裏插入圖片描述
5、運行newapp(./newapp)
在這裏插入圖片描述
在這裏插入圖片描述
6、解決方法
法一:修改LD_LIBRARY_PATH環境變量,將庫所在的路徑添加到環境變量中,用冒號分割(注意路徑,終端關閉重啓後會失效,不是特別推薦)
在這裏插入圖片描述
法二:修改/etc/ld.so.conf,添加庫路徑在該文件中,ldconfig (-v) (需要root權限)
在這裏插入圖片描述
在這裏插入圖片描述 靜態庫和動態庫的優缺點 靜態庫優點: ①執行快 ②發佈應用時不需要發佈庫 缺點: ①執行程序體積會比較大 ②庫變更時需要重新編譯應用 動態庫優點: ①執行體積小 ②庫變更時,一般不需要重新編譯應用 缺點: ①執行時需要加載動態庫,相對而言,比靜態庫慢 ②發佈應用時需要同時發佈動態庫