linux下簡單編譯與靜態庫編譯使用
阿新 • • 發佈:2019-01-10
庫函式,那麼一般來說庫函式分為兩種方式:靜態庫和動態庫。兩者的區別其實很小,靜態庫是必須要連結到執行檔案中去的,而動態庫是不需要連結到最後的執行檔案中的。怎麼理解呢?也就是說,對於最後的執行檔案而言,你是否刪除靜態庫無所謂。但是,一旦你刪除了動態庫,最後的執行檔案就玩不轉了。
這裡使用平時的方法和靜態庫方法進行簡單的測試,程式碼
add.cpp
#include "test.h"
int add(int a, int b)
{
return a + b;
}
add.h
main.cpp#ifndef _ADD_H #define _ADD_H int add(int a, int b); #endif
#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即可呼叫靜態庫檔案