自学内容网 自学内容网

制作一个静态库

 1. 准备工作

# 目录结构 add.c div.c mult.c sub.c -> 算法的源文件, 函数声明在头文件 head.h
# main.c中是对接口的测试程序, 制作库的时候不需要将 main.c 算进去
.
├── add.c
├── div.c
├── include
│   └── head.h
├── main.c
├── mult.c
└── sub.c

 add.c

#include <stdio.h>
#include "head.h"

int add(int a, int b)
{
    return a+b;
}

sub.c

#include <stdio.h>
#include "head.h"

int subtract(int a, int b)
{
    return a-b;
}

mult.c

#include <stdio.h>
#include "head.h"

int multiply(int a, int b)
{
    return a*b;
}

div.c

#include <stdio.h>
#include "head.h"

double divide(int a, int b)
{
    return (double)a/b;
}

head.h

#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

#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;
}

 2. 生成静态库

第一步,将源文件add.c, div.c, mult.c, sub.c 进行汇编,得到二进制目标文件add.o, div.o, mult.o, sub.o (注意用-I指定头文件路径)

gcc add.c div.c mult.c sub.c -c -I ./include/

第二步,使用ar工具将生成的目标文件 .o 打包成静态库 (a.o b.o c.o在同一个目录可以写成*.o)

ar rcs libcalc.a a.o b.o c.o 

第三步,将生成的静态库libcalc.a 和 库文件对应的头文件head.h 一起发布出去

 3. 使用静态库

gcc main.c -o app -L ./ -l calc

执行可执行程序。

./app

原文地址:https://blog.csdn.net/qinghehe198508/article/details/140172357

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!