Linux 静态库的制做

1.建立一个文件夹,名字随意,这里使用staticlib,内部分别建立文件目录include,src,lib,还有main.c文件。内部结构图入图所示git

2.在include的head.h文件中声明方法github

  • #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中写代码markdown

  • #include "head.h"
  • int add(int a, int b)
  • {
  • int result = a + b;
    复制代码
  • return result;
    复制代码
  • }

4.在div.c中写代码oop

  • #include "head.h"
  • int div(int a, int b)
  • {
  • int result = a / b;
    复制代码
  • return result;
    复制代码
  • }

5.在mul.c中写代码ui

  • #include "head.h"
  • int mul(int a, int b)
  • {
  • int result = a * b;
    复制代码
  • return result;
    复制代码
  • }

6.在sub.c中写代码spa

  • #include "head.h"
  • int sub(int a, int b)
  • {
  • int result = a - b;
    复制代码
  • return result;
    复制代码
  • }

7.将除了main.c以外的.c文件进行编译,生成.o文件code

  • 由于要生成目标文件的.c文件都放在src文件中了,因此cd到src文件orm

  • 而后执行gcc -c -I ../include *.c
    复制代码
  • gcc -c xxx.c 是生成.o文件命令
    复制代码
  • -I 是导入的功能
    复制代码
  • ../include   ..是上一级,也就是上一级的include文件
    复制代码
  • -I ../include 就是导入上级中的include文件中的内容
    复制代码
  • *.c 是通配符,表示当前文件夹下的全部.c文件
    复制代码

8.将.o文件进行打包(当前在src目录下)get

执行	ar src libCaculate.a *.o 
复制代码

而后会在当前目录下生成一个libCaculate.a的静态库 9.将静态库移动到lib文件夹下it

执行 mv libCaculate.a ../lib(此时已经移到lib文件夹下了)
cd .. (回到上一级,即staticlib级)
tree
复制代码

  1. 连接阶段(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…

相关文章
相关标签/搜索