靜態庫
程序 所 要 用 到 的庫函數 代碼 在 鏈接時全 部被copy 到程序中 。導致的問題 :如果有多個進程在內存中同時運行 , 並且使用了相同 的庫函數 ,那麼時運行 ,並且使用了相同 的庫函數 ,那麼就會 有 多份拷貝 ,這就是對空間的的浪費。Linux 下進行鏈接時 默認是鏈接動態庫,如果需要使用靜態庫,需要使用 -static指明。
靜態庫的制作:
1. gcc –c mylib.c –o mylib.o
2. ar cqs libmylib.a mylib.o
3. 將 將 制作好的 的libmylib.a 復制到 到/usr/lib
GCC在 在 鏈接時 , 默認只會鏈接會鏈接C 函數庫, 而對於 其 他 的函數庫, 則需要使用-l 選項來顯示地指 明 需要鏈接 。
使用選項-lname
例:gcc test.c –lmylib -o test
動態庫制作:
1. gcc –c mylib.c –o mylib.o
2. gcc -shared -fpic mylib.o -o libmylib.so
3. 將制作好的 的libmylib.so 復制到/usr/lib
-fpic 使輸出的對象模塊是按照可重定位地址方式生成的。
-shared 指 指 明 產生 動態鏈接