一、静态库和动态库的特点:
静态库:libxxx.a,在编译的时候,就将库编译进可执行程序中
优点:程序的运行环境中不需要外部库函数
缺点:程序运行较大
运用:先创建出源文件sub.c,然后根据:gcc -c sub.c -o sub.o,生成sub.o文件(目标文件)。紧接着运用静态库创建指令:ar -cr libsub.a sub.o,创建出静态库。
然后调用gcc main.c -L. -lsub
即可生成a.out文件
例子:
main:
#include <stdio.h>
int main()
{
int x = 2,y = 3;
int net;
net = sub(x,y)
printf("net is %d \n",net);
return 0;
}
int sub(int x,int y)
{
return (x-y);
}
动态库:libxxx.so,在运行中,将库加载到可执行程序中、
优点:程序运行较小
缺点:程序的运行环境中必须添加相应的库函数。
运用:先创建源文件sub.c,然后根据:gcc -c sub.c -o sub.o,生成sub.o文件(目标文件)。生成目标文件后,再根据:gcc -fpic -shared -o libsub.so sub.o指令,生成libsub.so文件,然后根据:gcc -o main main.c -L. -lsub
但是这个时候我们还是不可以编译成功使用的,我们的动态库需要在我们的lib文件下,才可以使用
也可以改变环境变量,达到编译成功的目的:export LD_LIBRARY_PATH=/home/自己的用户名/