Linux下建立乙個自己的小型函式庫(c 靜態庫)

2021-10-07 01:38:15 字數 2576 閱讀 4991

1. fun1.c

#include

void

fun1

(int arg)

2. fun2.c
#inclued 

void

fun2

(char

* arg)

上面兩個.c檔案是庫中的函式實現所需的原始檔 。

$ gcc -c fun1.c fun2.c

$ ls *.o

gcc -c 會生成 .o的目標檔案如下圖:

首先為庫檔案建立乙個標頭檔案(lib.h),裡面包含fnn1 和fun2的宣告,並且他應該被呼叫程式(program.c)所在檔案包含。

1.lib.h

// this is lib.h

#ifndef lib_h

#define lib_h

void

fun1

(int);

void

fun2

(char*)

;#endif

2.program.c
#include

#include

"lib.h"

intmain()

$ gcc -c program.c編譯program.c檔案生成.o目標檔案;

$ gcc -o program program.o fun2.o

將program.o檔案和fun2.o檔案鏈結生成可執行程式program;

$ ./program

執行program可執行程式結果如下。

如圖所示執行結果為fun2: we passed hello wprld!

###### 重點來了 ######

###### 重點來了 ######

###### 重點來了 ######

重要的事情說三遍,哈哈 !!!!!!!

現在可以使用ar程式建立乙個歸檔檔案(即庫檔案),並將你的目標檔案新增進去。

如圖所示libfoo.a庫檔案已經建立成功,你的目標檔案也新增進去了。下一步需要為庫函式生成內容表才可以使用函式庫。

$ ranlib libfoo.a

執行上述命令,你的函式庫便可以使用了

使用函式庫建立你的程式

$ gcc -o program program.o libfoo.a

或者使用-l來訪問函式庫。

$ gcc -o program program.o -l. -lfoo

這裡命令中的-l.告訴編譯器在當前目錄中查詢函式庫(因為這個庫不在標準位置,所有加-l項告訴編譯器路徑)。-lfoo告訴編譯器使用libfoo.a的函式庫。

可以在命令列輸入$ nm 'filename'檢視檔案中的函式。

例如program中:

由上圖可知program可執行程式檔案中只包含fun2函式;

但是在libfoo.a中包含fun1fun2兩個函式,

所以,在program.c 中雖然包含lib.h標頭檔案,但是在程式被建立時,只包含它實際需要的函式,不會將整個函式庫包含在程式中。

int

main()

else

else}}

return0;

}

如果你覺得我是乙個有趣的人,我想那最好不過的了。

但事實往往是:

error 404

: girlfriend not found.

哎,這不是我要的結果啊!!!!!(哭暈在廁所…)

linux 下建立乙個C 工程

熟悉了windows平台下編譯乙個c 工程後,你是否會提出這樣乙個問題 在linux平台下又如何編譯乙個c 工程呢?希望本文能給正在學習或想學習linux c 開發的你起到拋磚引玉的作用。首先,你必須有乙個linux開發環境,這樣才能進行c 開發。筆者用的是安裝在虛擬機器中的ubuntu 9.04,...

建立乙個屬於自己的shell

1 寫乙個屬於自己的微型myshell 2 功能 myshell ls 3 能夠執行基礎linux 命令 4 5 6 include7 include8 include9 include10 include11 1 獲取終端輸入 12 2 解析輸入 按空格解析到乙個乙個的命令引數 13 3 建立乙個...

自己寫的乙個linux下的bash安裝

每次安裝linux下的包的時候都要乙個個config make make install安裝,煩,抽了個空,查了些資料,寫了個bash安裝指令碼,分別安裝了openldapujs freeradiusujs及checkuserujs包,安裝時只需.install.sh即可,這三個包放在與instal...