1. 程式人生 > >linux下簡單編譯與靜態庫編譯使用

linux下簡單編譯與靜態庫編譯使用

庫函式,那麼一般來說庫函式分為兩種方式:靜態庫和動態庫。兩者的區別其實很小,靜態庫是必須要連結到執行檔案中去的,而動態庫是不需要連結到最後的執行檔案中的。怎麼理解呢?也就是說,對於最後的執行檔案而言,你是否刪除靜態庫無所謂。但是,一旦你刪除了動態庫,最後的執行檔案就玩不轉了。

    這裡使用平時的方法和靜態庫方法進行簡單的測試,程式碼

    add.cpp

#include "test.h"

int add(int a, int b)
{
    return a + b;
}
  add.h
#ifndef _ADD_H
#define _ADD_H

int add(int a, int b);
#endif
main.cpp
#include <stdio.h>
#include "add.h"

int main()
{
    printf("%d\n", add(2, 3));
    return 1;
}
使用普通的辦法:

1. gcc main.cpp add.cpp -o main

2 ./main

3,輸出為5

使用靜態庫的方法:

(1)生成靜態庫

   1. 首先生成*.o檔案,輸入gcc -c add.cpp -o add.o

    2,利用ar命令生成靜態庫,輸入ar rc libadd.a add.o
(2)main.cpp檔案使用到了這個靜態庫

   1. gcc main.cpp -o main ./libadd.a

   2. ./main

   3,輸出為5

小結:本例中,main.cpp 引用了add.h,那麼我們可以通過add.h add.cpp 生成add.a庫檔案(系統查詢是字首為lib)

           此時主函式字尾加上./libadd.a即可呼叫靜態庫檔案