【 聲明:著作權,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】
在我們編寫軟體的過程當中,少不了需要使用別人的庫函數。因為大家知道,軟體是一個協作的工程。作為個人來講,你不可能一個人完成所有的工作。另外,網路上一些優秀的開源庫已經被業內廣泛接受,我們也沒有必要把時間浪費在這些重複的工作上面。
既然說到了庫函數,那麼一般來說庫函數分為兩種方式:靜態庫和動態庫。兩者的區別其實很小,靜態庫是必須要連結到執行檔案中去的,而動態庫是不需要連結到最後的執行檔案中的。怎麼理解呢?也就是說,對於最後的執行檔案而言,你是否刪除靜態庫無所謂。但是,一旦你刪除了動態庫,最後的執行檔案就玩不轉了。
今天我們討論的問題是靜態庫。為了顯示windows和linux建立靜態庫之間的差別,我們首先在windows上面利用Visual C++6.0建立一個靜態庫。源檔案的代碼很簡單,
#include "test.h"int add(int a, int b){ return a + b;}
標頭檔代碼也不難,
#ifndef _TEST_H#define _TEST_Hint add(int a, int b);#endif
如果你需要在windows上面建立一個靜態庫,那麼你需要進行下面的操作,
(1)開啟visual C++ 6.0工具,單擊【File】-> 【New】->【Projects】
(2)選擇【Win32 Static Library】,同時在【Project Name】寫上項目名稱,在【Location】選擇項目儲存地址
(3)單擊【Ok】,繼續單擊【Finish】,再單擊【Ok】,這樣一個靜態庫工程就建立好了
(4)重新單擊【File】->【New】->【Files】,選擇【C++ Source Files】,
(5)選中【Add to pproject】,將源檔案加入到剛才建立的工程中去,在File中輸入檔案名稱+.c尾碼
(6)重複4、5的操作,加入一個檔案名稱+.h標頭檔
(7)分別在標頭檔和源檔案中輸入上面的代碼,單擊F7按鈕,即可在Debug目錄中產生*.lib靜態庫檔案
那麼,在linux下面應該怎麼運行呢?其實很簡單,兩條命令解決,
(1)首先產生*.o檔案,輸入gcc -c test.c -o test.o
(2)利用ar命令產生靜態庫,輸入ar rc libtest.a test.o
此時如果還有一個hello.c檔案使用到了這個靜態庫,比如說 ,
#include <stdio.h>#include "test.h"int main(){ printf("%d\n", add(2, 3)); return 1;}
其實也很簡單,輸入一個簡單的命令就可以產生執行檔案了,
(1)首先輸入gcc hello.c -o hello ./libtest.a
(2)輸入./hello,驗證產生的執行檔案是否正確
(3)朋友們可以刪除libtest.a檔案,重新輸入./hello,驗證執行檔案是否可以正常運行