Linux靜態庫與動態庫製作過程

2022-09-06 17:42:15 字數 1486 閱讀 5003

檔案: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 -o3 

objs= 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.so

main:$(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下靜態庫與動態庫的製作

二者的不同點在於 被載入的時刻不同。靜態庫在程式編譯時會被連線到目標 中,程式執行時將不再需要該靜態庫,因此體積較大 動態庫在程式編譯時並不會被連線到目標 中,而是在程式執行是才被載入,因此在程式執行時還需要動態庫存在,因此 體積較小。現實中每個程式都要依賴很多基礎的底層庫,不可能每個人的 都從零開...