檔案:tobigchar.c mian.c tobigchar.h
char tos()
#include#include"tobigchar.h"
int main()
#ifndef _h_
#define _h_
int tos();
#endif
生成目標檔案:
gcc -c -o tobigchar.o tobigchar.c
生成靜態庫:
ar rcs libtobigchar.a tobigchar.o
編譯程式:
gcc -i./ -l./ main.c -ltobigchar
執行程式:
./a.out
生成目標檔案:
gcc -c -fpic -o tobigchar.o tobigchar.c
生產動態庫:
gcc -shared -o libtobigchar.so tobigchar.o
編譯程式:
gcc -i./ -l./ main.c -ltobigchar
設定動態庫環境變數:
export ld_library_path=/mnt/hgfs/linux/linuxshare/20190119/code:$ld_library_path //pwd列印出當前檔案的絕對路徑
執行程式:
./a.out
為什麼要做庫?
在做專案的時候,一般都不是乙個人可以完成的,需要團隊合作,每個人的分工不一樣,做底層函式的成員提供乙個庫,為上層應用提供函式介面就行。
makefile指令碼:靜態庫
cflags=-wall -o3objs= main.o libtobigchar.a
main:$(objs)
@$(cc) $(cflags) -i./ -l./ $< -o $@ -ltobigchar
libtobigchar.a:tobigchar.o
@$(ar) rcs $@ $<
%.o : %.c
@$(cc) -c $< -o $@
clean:
@$(rm) a.out *.o *.a *.so
makefile指令碼:動態庫
objs=main.o libtobigchar.somain:$(objs)
$(cc) -i./ -l./ $< -o $@ -ltobigchar
libtobigchar.so:tobigchar.o
$(cc) -shared -o $@ $<
%.o:%.c
$(cc) -c -fpic $< -o $@
clean:
$(rm) *.o *.so *.a a.out
Linux下製作動態庫與靜態庫
靜態函式庫 1.這類庫的名字一般是lib a 2.利用靜態函式庫編譯成的檔案比較大,因為整個函式庫的所有資料都會被整合進目標 中,他的優點就顯而易見了,即編譯後的執行程式不需要外部的函式庫支援,因為所有使用的函式都已經被編譯進可執行檔案了。當然這也會成為他的缺點,因為如果靜態函式庫改變了,那麼你的程...
Linux靜態庫與動態庫製作及使用
一 二者區別 1 靜態庫是在程式執行前就加入到目標程式中去 動態庫程式執行的過程動態的由目標程式去呼叫 2 靜態庫對空間要求不高,對時間要求高 動態庫對時間要求不高,對空間要求高 二 庫製作 同一目錄下有三個檔案 主 hellomain.c 頭 hellomain.h功能 hellofunc.c 1...
Linux下靜態庫與動態庫的製作
二者的不同點在於 被載入的時刻不同。靜態庫在程式編譯時會被連線到目標 中,程式執行時將不再需要該靜態庫,因此體積較大 動態庫在程式編譯時並不會被連線到目標 中,而是在程式執行是才被載入,因此在程式執行時還需要動態庫存在,因此 體積較小。現實中每個程式都要依賴很多基礎的底層庫,不可能每個人的 都從零開...