Linux下靜態庫的生成以及庫的巢狀

2021-09-29 10:54:39 字數 1483 閱讀 1542

關係

makefile 生成靜態庫 「libworldstatic.a」

world : world.c

gcc -c world.c

ar -r libworldstatic.a world.o

把上面world.h 和 生成的libworldstatic.a複製到當前工程下

hello.c

#include #include "hello.h"

#include "world.h"

void funhello()

hello.h

#ifndef hello_h_

#define hello_h_

void funhello();

#endif

makefile 生成靜態庫 「libhellostatic.a」

hello : hello.c

gcc -c hello.c

ar x libworldstatic.a

ar cru libhellostatic.a *.o

clean:

rm -rf libhellostatic.a *.o

ar命令類似於tar,需要先將之前的word庫解析為*.o檔案,然後與新的.o檔案功能生成新的靜態庫

將上面的hello.h 和 生成的libhellostatic.a複製到當前工程下

main.c

#include #include "hello.h"

void main()

makefile

main : main

gcc -o main main.c -l. -lhellostatic

clean:

rm -rf *.o

核心是hello工程的makefile,需要對world庫進行重新拆包封裝。不這樣做的話hello庫中不會包含world庫的。對應的問題現象是編譯main工程時提示undefined reference funworld(即word工程函式)

linux下動態庫和靜態庫生成

有時候需要把一組 編譯成乙個庫,這個庫在很多專案中都要用到,例如libc就是這樣乙個庫,我們在不同的程式中都會用到libc中的庫函式 例如printf 也會用到libc中的變數 例如以後 要講到的environ變數 本文將介紹怎麼建立這樣乙個庫。這些檔案的目錄結構是 tree main.c stac...

Linux下靜態庫和動態庫的生成

1.何為靜態庫 何為動態庫 windows下 dll 是動態庫 lib是靜態庫 linux下 so是動態庫 a是靜態庫 靜態庫 在生成可執行程式的時候,會把函式的具體執行方式封裝到程式中,程式體積比較大,只要能編譯成功,就可以在任意相同的平台上執行 動態庫 在生成可執行程式的時候,只會把函式的介面封...

Linux 靜態庫生成

linux上的靜態庫,其實是目標檔案的歸檔檔案。在linux上建立靜態庫的步驟如下 寫原始檔,通過gcc c c生成目標檔案。用ar歸檔目標檔案,生成靜態庫。配合靜態庫,寫乙個使用靜態庫中函式的標頭檔案。使用靜態庫時,在原始碼中包含對應的標頭檔案,鏈結時記得鏈結自己的庫。下面通過例項具體講解。第乙個...