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
中包含fun1
、fun2
兩個函式,
所以,在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...