Linux操作系统支持的库函数分为;
1.静态库:libxxx.a 在编译时就将库函数编译进可执行程序中.
优点. 程序运行环境中不需要外部的函数库.
缺点: 可执行程序大
2. 动态库 .又称共享库,libxxxx.so 在运行时候将库加载到可执行程序中.
优点: 可执行程序小.
缺点: 程序的运行环境中必须提供相应的库
函数库目录: /lib /usr/lib
静态库的制作过程:
1. 生成目标文件: gcc -c -o file.o file.c
将.c文件编译成.o文件.
2. 静态库创建命令 ar
ar -cr -o libfile.a file.o
-c : create的意思.
-r : replace的意思.表示当插入的模块file.o已经存在libfile.a中,则覆盖,反之ar显示一个错误信息.
使用过程: gcc main.c -L .(.表示在当前目录下) -lsub
动态库的制作过程:
1. 生成目标文件: gcc -c -o file.o file.c
2. gcc -shared -fpic -o libfile.so file.o
-fpic:产生位置 无关代码.
- shared: 生成共享库.
用上述命令生成libaddsub.so动态函数库.
gcc -o main -L. -lfile
此时还不能立即./out,因为在动态函数库使用时,会查找/usr/lib /lib目录下的动态函数库,而此时我们生成的库不在里边.
第一种办法:
将生成的libsub.so放到/usr/lib或/lib中去.
第二种方法 假设libfile.so在/home/file
export LD_LIBRARY_PATH=home/linux/addsub(路径): $LD_LIBRARY_PATH