gcc linux 靜態鏈結庫,生成與使用

2021-06-08 07:46:36 字數 682 閱讀 5315

靜態鏈結庫的生成

簡單地說,靜態庫是乙個目標檔案的簡單集合。因此,首先要解決目標檔案。

第一步:將各函式**所在的原始檔編譯成目錄檔案。

例如,對於myfunc.c, myproc.c

gcc -c myfunc.c myproc.c

將得到myfunc.o和myproc.o

第二步:由ar(archive,歸檔的意思)把多個目標檔案集合起來。

$ar -r libmyjob.a myfunc.o myproc.o

通常,靜態庫的命名方式應遵守lib***xx.a格式。應用程式在使用靜態庫的時候,通常只需要把命名中的***xx部分傳遞給gcc即可。例如:

$gcc –o mywork –lmyjob …

意為讓gcc(實際上是gcc呼叫ld)去連線乙個名字為libmyjob.a(或者libmyjob.so)的庫。如果庫的命名不遵循lib***xx.a的格式就找不到相應檔案。

例子:建立靜態庫

hello.h為該函式庫的標頭檔案。hello.c是函式庫的源程式,其中包含公用函式hello,該函式將在螢幕上輸出"

hello ***!"。main.c為測試庫檔案的主程式,在主程式中呼叫了公用函式hello。

靜態鏈結庫的使用

鏈結當前目錄下的.myfunc.o檔案

gcc -lmyfunc.o -l.  ...

生成和使用動態鏈結庫和靜態鏈結庫

生成和使用動態鏈結庫和靜態鏈結庫的makefile編寫 1.概述 介紹linux下生成和使用動態鏈結庫和靜態鏈結庫的makefile的編寫方法。2.生成動態鏈結庫的makefile 首先要有乙個c或c 等工具編寫出來的庫函式檔案,也就是裡面寫了一堆可以被別的函式呼叫的函式。比如 aaa.cpp in...

動態鏈結庫 靜態鏈結庫

包含標頭檔案和庫 idir 指定編譯查詢標頭檔案的目錄,常用於查詢第三方的庫的標頭檔案,例 gcc test.c i.inc o test。ldir 指定鏈結時查詢lib的目錄,常用於查詢第三方庫。llibrary 指定額外鏈結的lib庫 巨集定義 dmacro 以字串 1 預設值 定義 macro...

靜態鏈結庫 動態鏈結庫

庫是寫好的現有的,成熟的,可以復用的 現實中每個程式都要依賴很多基礎的底層庫,不可能每個人的 都從零開始,因此庫的存在意義非同尋常。本質上來說庫是一種可執行 的二進位制形式,可以被作業系統載入記憶體執行。庫有兩種 靜態庫 a lib 和動態庫 so dll windows上對應的是.lib dll ...