C语言库的制作
為什么80%的碼農都做不了架構師?>>> ??
制作C語言庫
編寫頭文件,在文件內聲明要用到的函數,
libh.h
#include <stdio.h> // 兩數相加 int add(int a, int b); // 絕對值 int mabs(int a);編寫c語言庫源碼文件, 在文件內定義之前聲明的函數。
libc.c
/*兩數相加函數*/ int add(int a, int b) { return a+b; } /*一個整型數的絕對值*/ int mabs(int m) { int result = m; if (m < 0) { result = 0-m; } return result; }生成C語言庫
靜態庫
將libc.c 編譯成二進制文件取名為libc.o
ar cr libaku.a libc.o將libc.o制作成名為libaku.a的靜態庫
動態庫
將libc.c 編譯成二進制文件取名為libc.o
gcc -shared -fPIC -o libsku.so libc.o將libc.o制作成名為libsku.so的動態庫
調用C語言庫
編寫測試程序
main.c
#include "libh.h" int main(int argc, char const* argv[]) { int n = 0; scanf("%d", &n); printf("|%d| = %d\n%d + 3 = %d\n", n, mabs(n), n, add(n, 3)); return 0; }編譯測試程序
測試靜態庫
-L指定庫路徑,-l指定庫名, 庫名為lib后半部分,編譯測試程序取名為main**
./maina運行main
測試動態庫
-L指定庫路徑,-l指定庫名, 庫名為lib后半部分,編譯測試程序取名為main**
./mains運行main
動態庫, 靜態庫, 之間的差別
對于靜態庫而言, 當程序編譯時會把靜態庫載入到程序當中去, 生成的運行包會比較大。
而且完成后靜態庫刪除對程序不會有影響
但是動態庫卻是相反的, 它不會載入程序, 庫必須保留,
轉載于:https://my.oschina.net/dengwo/blog/599378
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
- 上一篇: iPhone屏幕知识点
- 下一篇: IDEA 连接 GIT OSCHINA