静态库:静态库函数是在执行程序前(编译)就加入到目标程序中去了。
优点:运行快
缺点:程序大
动态库:动态库函数是在执行动态(临时)由目标程序去调用。
缺点:运行慢
优点:小
静态库的制作
静态库的制作:格式xxxx.a
gcc calcufuncs.c -c
生成xxx.o文件ar rcs libcalcufunc.a calcufuncs.o
xxx.o文件生成xxx.a静态库文件
静态库的使用:
gcc calculatorT.c -lcalcufunc -L ./ -o mainProStatic
-lcalcufunc
-l是制定要用的动态库,库名砍头去尾
-L告诉gcc编译器从-L制定的路径去找静态库。默认是从/usr/lib /usr/local/lib去找
动态库的制作
gcc -shared -fpic calcufuncs.c -o libcalc.so
-shared 指定生成动态库
-fpic 标准,fPIC 选项作用于编译阶段,在生成目标文件时就得使用该选项,以生成位置无关的代码。
pi@raspberrypi:~/zhp_test/01creat_lib $ gcc -shared -fpic calculfunC.c -o libcalc.so
pi@raspberrypi:~/zhp_test/01creat_lib $ ls
calculatorT.c calculfunC.c calculfunC.h libcalc.so libcalculfunc.a mainProStatic
动态库的使用:
带动态库的程序,
可以指定该程序运行时候,在LD_LIBRARY_PATH 所指定的路径去找库文件
export LD_LIBRARY_PATH="/home/pi/back/test"
但是这种方法换一个窗口又会执行失败,需要重新搜寻。
注意:等号两边不能有空格