【C編程】自建C庫
如何自建C庫,我搜索how to make your own C library。
方法是:
1)被調用方:定義.h和多個.c文件,每個.c要include .h文件。編譯生成動態庫。
2) 調用方:編寫.c文件時include .h文件。編譯時和動態庫聯編。
舉例
- 編寫calc.h
#ifndef CALC_H
#define CALC_H
int add(int x, int y);
int subtract(int x, int y);
int multiply(int x, int y);
#endif /* #ifndef CALC_H */
這裏#ifndef #define #endif是頭文件的固定格式,稱為include guard,避免避免被多次import,否則編譯會出錯。[1]
- 編寫calc.c
#include "calc.h"
int add(int x, int y) {
return x + y;
}
int subtract(int x, int y) {
return x - y;
}
這裏要include頭文件。
- 編寫calc2.c
#include "calc.h"
int multiply(int x, int y) {
return x * y;
}
- 編寫調用程序ex1.c
#include <stdio.h>
#include "calc.h"
int main() {
printf("5 + 5 = %d\n", add(5, 5));
printf("6 - 4 = %d\n", subtract(6, 4));
printf("7 * 8 = %d\n", multiply(7, 8));
return 0;
}
這裏也include頭文件。
- 編譯:
自建的庫生成動態庫:
gcc calc.c calc2.c -fPIC -shared -o libcalc.dll
PIC表示Position-Independent Code。
調用方編譯與動態庫聯編:
gcc ex1.c -o ex1 -L. libcalc.dll
. 表示當前目錄。
如果動態庫的名稱是libcalc.so,在我的MacOS也是可以的。
參考:
W3C, "C Organize Code",https://www.w3schools.com/c/c_organize_code.php ↩︎

浙公网安备 33010602011771号