保密性:比如你开发的一个压缩算法拿去卖钱,使用库可以避免被人看出逻辑,即使反编译也没用
add.c
#include <stdio.h>
#include "head.h"
int add(int a, int b)
{
return a+b;
}
静态库制作
1. 生成.o文件
gcc -c add.c div.c multi.c sub.c
如果头文件报错,需要添加-I,指定头文件路径
2. 创建静态库
ar rcs libcalc.a add.o sub.o mult.o div.o
静态库的使用
把libcalc.a静态库复制到项目的lib目录下
main.c
#include <stdio.h>
#include "head.h"
int main()
{
int a = 20;
int b = 12;
printf("a = %d, b = %d\n", a, b);
printf("a + b = %d\n", add(a, b));
printf("a - b = %d\n", subtract(a, b));
printf("a * b = %d\n", multiply(a, b));
printf("a / b = %f\n", divide(a, b));
return 0;
}
头文件
#ifndef _HEAD_H
#define _HEAD_H
// 加法
int add(int a, int b);
// 减法
int subtract(int a, int b);
// 乘法
int multiply(int a, int b);
// 除法
double divide(int a, int b);
#endif
编译报错,找不到头文件
main.c当前目录下找不到head.h
解决方案:使用-I参数指定头文件路径,使用-L指定静态库的路径
正确编译指令
gcc main.c -o app -I ./include/ -l calc -L ./lib