什么是库?

简单来说,就像函数一样。你自己写了一个函数,想调用就调用嘛。如果别人也想用你这个函数,但是你这个函数写的特别优秀漂亮,功能特别完善。你会给他源码嘛?所以库就是类似一个你自己写的函数,你可以给代码隐藏起来。这样别人可以用但是不能看到源码。
—————————————————————————
在Linux里面库可以分为两种:

静态库 xxx.a
动态库 xxx.so

首先我们先来看一下静态库
静态库就是将你调用的库编译到可执行程序里面。具体我们看例子

我们先创建两个小程序:
static_jason.c :
linux下动态库和静态库的创建_linux
mian.c:
linux下动态库和静态库的创建_动态库_02
这样很容易看出来mian.c文件是主函数,static_jason.c就是要制作的库。
首先:
linux下动态库和静态库的创建_动态库_03
linux下动态库和静态库的创建_动态库_04

具体操作
    gcc -c fun.c -o fun.o
    ar rc libfun.a fun.o  //格式libxxx.a
    gcc main.c -o main -l fun -L ./ 
    //最后一步链接时候,注意是fun不是fun.a -L后面跟静态库所在路径

前两步骤是创建静态库,最后一个是使用方法。

动态库

动态库和静态库的区别就是,静态库将库里面的程序已经编译到最终的可执行文件里面去了,而动态库没有编译到可执行文件里面,只是在运行可执行文件时候可以自己调用库。
动态库创建方法比较简单:

    gcc -fPIC -c fun.c -o fun.o
    gcc -fPIC -shared fun.o -o libfun.so
    gcc main.c -o main -l fun -L ./ 

注意第三步前要将libxxx.so文件复制在 /lib目录里面或者/usr/bin