Linux 学习笔记(十八)—— 动静态库
把自定义的方法给别人用,有两种方法:
- 把源代码给别人;
- 把源代码打包成库,给别人库文件和头文件;
一、创建静态库
//Makefile
lib=libmymath.a
$(lib):mymath.o
ar -rc $^ // replace and create 如果存在就替换,如果不存在就创建
mymath.o:mymath.c
gcc -c $^
.PHONY:clean
clean:
rm -fr *.o *.a lib
.PHONY:output
output:
mkdir -p lib/include
mkdir -p lib/mymathlib
mv mymath.h ./lib/include
mv libmymath.a ./lib/mymathlib
//mymath.h
extern int myerrno;
int add(int x, int y);
int sub(int x, int y);
int mul(int x, int y);
int div(int x, int y);
//mymath.c
#include "mymath.h"
int myerrno = 0;
int add(int x, int y)
{return x + y;}
int sub(int x, int y)
{return x - y;}
int mul(int x, int y)
{return x * y;}
int div(int x, int y)
{if(y == 0)
{
myerrno = 1;
return -1;
}
return x / y;}
二、使用静态库
#include "mymath.h"
int main()
{
printf("1 + 1 = %d\n", add(1, 1));
printf("10 / 0 = %d\n", div(10, 0));
// 这里返回的“-1”如何知道是出错了还是计算结果就是-1;
return 0;
}
指令:gcc main.c -I .lib/include/ -L .lib/mymathlib/ -lmymath
原文地址:https://blog.csdn.net/shaggy123456/article/details/143569970
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!