linux 静态库的制作

1、静态库的制作
1)命名规则 lib + 库的名字 + .a 例如 libmytest.a 库的名字就是mytest
2)制作步骤 生成对应的.o文件 .c 文件生成 .o 文件 添加 -c参数 然后将生成的.o文件打包 ar rcs + 静态库的名字(libmytest.a) + 生成的所有的.o 文件
首先创建好如下的目录结构:
在这里插入图片描述

//main.c
#include <stdio.h>
#include "head.h" 
int main(void)
{
    int sum = add(2, 24);
    printf("sum = %d\n", sum);
    return 0;
}

 //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

//add.c
#include "head.h" 
int add(int a, int b)
{
    int result = a + b;
    return result;
}

//div.c
#include "head.h" 
int div(int a, int b)
{
    int result = a / b;
    return result;
}

//mul.c
#include "head.h" 
int mul(int a, int b)
{
    int result = a * b;
    return result;
}

//sub.c

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

代码见上图
在这里插入图片描述
这里会出现找不到头文件的情况 所以我们要指定头文件的路径
然后将src目录的全部.c文件编译成.o文件 gcc *.c -c -I…/include
然后打包
在这里插入图片描述
将生成的库文件放到lib目录下 mv libmytest.a …/lib
3)发布和使用静态库 将lib目录和include目录发布给用户就可以了
使用 gcc main.c lib/libmytest.a 会报错 需指定头文件目录

在这里插入图片描述
第二种写法: gcc main.c -Iinclude -L lib -l mytest -o main
在这里插入图片描述
参数 -Iinclude 指定有文件目录 -L 指定库文件目录 -l 库名

发布了43 篇原创文章 · 获赞 1 · 访问量 2323

猜你喜欢

转载自blog.csdn.net/lpl312905509/article/details/100714815