linux课程学习三——静态/动态库的创建
一.Linux操作系统函数库的分类
Linux操作系统支持的函数库分为:
静态库,libxxx.a,在编译时就将库编译进可执行程序中。
优点:程序的运行环境中不需要外部的函数库。
缺点:可执行程序大
动态库,又称共享库,libxxx.so,在运行时将库加载到可执行程序中。
优点:可执行程序小。
int fgetc(FILE *fp)
int fputc(int c, FILE *fp)
缺点:程序的运行环境中必须提供相应的库。
函数库目录:/lib /usr/lib
ls -l *.a查看静态库有哪些 ls -l *.so查看动态库有哪些
二.静态库创建
写man.c与sub.c文件内容如下,写好后去执行man.c,会显示sub函数没有定义,所以不能生成a.out,这就要根据上面的步骤去写
步骤一 生成目标文件:gcc -c file.c .o
执行gcc sub.c -c -o sub.o
查看目录,可以看到已经生成了sub.o目标文件
步骤二:ar ‐cr -o libfile.a(静态库) file.o(目标文件) 创建静态库
步骤三:执行 gcc man.c -L. -lsub
这时虽然有警告,但是可以看到a.out已经生成了,去执行结果也是对的
三.动态库的创建
第一步创建目标文件
把静态库创建的sub.0删除,执行gcc -c -o sub.o sub.c,再次创建sub.o目标文件
第二步:gcc -shared -fpic -o libfile.so file.o
gcc -shared -fpic -o sub.so sub.o