1.创建一个文件夹,名字随意,这里使用staticlib,内部分别创建文件目录include,src,lib,还有main.c文件。内部结构图入图所示
2.在include的head.h文件中声明方法
- #ifndef _HEAD_H
- #define _HEAD_H
- int add(int ,int);
- int sub(int ,int);
- int mul(int ,int);
- int div(int ,int);
- #endif
3.在add.c中写代码
- #include "head.h"
- int add(int a, int b)
- {
-
int result = a + b; 复制代码
-
return result; 复制代码
- }
4.在div.c中写代码
- #include "head.h"
- int div(int a, int b)
- {
-
int result = a / b; 复制代码
-
return result; 复制代码
- }
5.在mul.c中写代码
- #include "head.h"
- int mul(int a, int b)
- {
-
int result = a * b; 复制代码
-
return result; 复制代码
- }
6.在sub.c中写代码
- #include "head.h"
- int sub(int a, int b)
- {
-
int result = a - b; 复制代码
-
return result; 复制代码
- }
7.将除了main.c之外的.c文件进行编译,生成.o文件
-
因为要生成目标文件的.c文件都放在src文件中了,所以cd到src文件
-
然后执行gcc -c -I ../include *.c 复制代码
-
gcc -c xxx.c 是生成.o文件命令 复制代码
-
-I 是导入的功能 复制代码
-
../include ..是上一级,也就是上一级的include文件 复制代码
-
-I ../include 就是导入上级中的include文件中的内容 复制代码
-
*.c 是通配符,表示当前文件夹下的所有.c文件 复制代码
8.将.o文件进行打包(当前在src目录下)
执行 ar src libCaculate.a *.o
复制代码
然后会在当前目录下生成一个libCaculate.a的静态库 9.将静态库移动到lib文件夹下
执行 mv libCaculate.a ../lib(此时已经移到lib文件夹下了)
cd .. (回到上一级,即staticlib级)
tree
复制代码
- 链接阶段(staticlib文件夹下)
-
gcc main.c -I include -L lib -l Caculate
-
或者
-
gcc main.c -I include -L lib -l Caculate -o 指定名字
会生成一个对应的a.out文件/指定名字文件
11 执行
./a.out 或者 ./指定名字
复制代码
demo地址: github.com/suifumin/Li…