自学内容网 自学内容网

Linux 学习笔记(十八)—— 动静态库

把自定义的方法给别人用,有两种方法:

  1. 把源代码给别人;
  2. 把源代码打包成库,给别人库文件和头文件; 
一、创建静态库
//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)!