什么是库?
简单来说,就像函数一样。你自己写了一个函数,想调用就调用嘛。如果别人也想用你这个函数,但是你这个函数写的特别优秀漂亮,功能特别完善。你会给他源码嘛?所以库就是类似一个你自己写的函数,你可以给代码隐藏起来。这样别人可以用但是不能看到源码。
—————————————————————————
在Linux里面库可以分为两种:
静态库 xxx.a
动态库 xxx.so
首先我们先来看一下静态库
静态库就是将你调用的库编译到可执行程序里面。具体我们看例子
我们先创建两个小程序:
static_jason.c :
mian.c:
这样很容易看出来mian.c文件是主函数,static_jason.c就是要制作的库。
首先:
具体操作
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