静态库
在程序运行之前(编译)的时候,加入到目标程序中去。
优点:1、(快)静态库加载到应用程序中加载快。
2、发布程序的时候无需提供静态库,app中存在方便移植。
缺点:1、 链接时完整的拷贝到可执行文件,多次使用就有多分冗余拷贝。
2、更新麻烦。
动态库
在程序运行的时候有目标程序调用
优点:小、链接时不复制,程序运行时由系统动态加载到内存。
系统只加载一次,多个程序公用,节省空间
缺点; 慢
静态库和动态库最本质的区别就是:该库是否被编译进目标(程序)内部。
库的使用和制作(制作就是吧功能程序打包)(.a)
静态库的制作:
1 、 gcc xxxx.c -c // 把 .c 文件生成 .o 文件
2、 ar rcs libxxx.a xxxx.o // 把第一步生成的 .o 文件生成 .a文件(静态库)
静态库的使用:
(被别人的主函数使用):把功能函数的包(.a文件)和 .h 文件 一起给别人。
别人的文件夹里 需要有 “.a” “.h” “.c”(这个是别人自己写的程序)
编译.c 文件
gcc mymian.c -l xxxx -L./
//mianmy.c 是自己的程序
// xxxx : 是把静态库libxxx.a 掐头去尾
//-l 是在默认路径寻找库 -L在当前位置找库
动态库的制作
gcc -shared -fpic xxxx.c -o libxxx.o
-share 生成指定动态库
fpic 作用域编译阶段,生成位置无关码
动态库编译的时候需要 指定动态库的位置
一般写一个脚本 start.sh
export LED_LIBRARY_PATH = ”/home/pi/test“
./mainpro
chomd +x shart.sh//给脚本一个可执行的命令
./start.sh//可以运行