目录
1.什么是函数库
一个程序函数库是一个包含了一些编译好的代码和数据的文件,这些编译好的代码和数据可以在事后供其他的程序使用。程序函数库可以使整个程序更加模块化,更容易重新编译,而且更方便升级。
函数库可以分为:静态函数库(static libraries),动态函数库(shared libraries);
2.静态库和动态库的区别
1.静态函数库,是在程序执行前就加入到目标程序中去;
优点:运行快
缺点:程序太大
2.动态函数库,是在程序执行时临时由目标程序去调用
缺点:运行慢
优点:程序小而简介
3.静态库的制作和使用
静态库的制作操作步骤如下:
test.c制作成静态库
1.输入指令:gcc test.c -c 生成test.o文件
2.输入指令:ar rcs libtest.a test.o(test.o文件生成libtest.a静态库文件)
静态库的使用:
操作步骤如下:
main.c需要用到静态库libtest.a
1.输入指令:gcc main.c -ltest -L ./
说明:
-ltest -l是指定要用的静态库,库名libtest.a砍头区尾使用test
-L告诉gcc编译器从-L指定的路径去找静态库,默认是从路径/usr/lib或者/usr/local/lib去找
4.动态库的制作和使用
动态库的制作操作步骤如下:
test.c制作成动态库
1.gcc -shared -fpic test.c -o libtest.so
说明:
-shared 指定生成动态库
-fpic 选项作用于编译阶段,在生成目标文件时就得使用该选项,以生成位置无关得代码
动态库的使用:
操作步骤如下:
main.c需要用到动态库libtest.so
1.输入指令:gcc main.c -ltest -L ./ -o pro
说明:
-ltest -l是指定要用的动态库,库名libtest.so砍头区尾使用test
-L告诉gcc编译器从-L指定的路径去找动态库,默认是从路径/usr/lib或者/usr/local/lib去找
带动态库的程序的运行的时候,在LD_LIBRARY_PATH所指定的路径去找库文件
export LD_LIBRARY_PATH="动态库的路径"
计算文件的大小使用 du 指令