1.库的概念
.o文件的集合
2.静态链接库:libxxx.a //库的名字必须是这个形式
a.程序执行时只需要可执行文件
b.每个程序都单独拥有一个库的复制文件
c.程序升级时需要更换整个可执行文件
d.编译时需要库,运行时不需要
3.动态链接库:libxxx.so //库的名字必须是这个形式
a.程序执行时需要可执行文件&库文件
b.多个程序公用一个库文件
c.程序执行时只需更换库文件
d.编译和运行时都需要库文件
4.动态库的生成&使用
库的编译:
arm-linux-gnueabihf-gcc -fPIC -shared func.c -o libfun.so //将库的.c文件编译成.so文件
ARM应用程序的生成(fun.h放在main.c同层inc目录下,libfun.so存放在man.c同层lib目录下)
arm-linux-gnueabihf-gcc man.c -lfun -L ./lib -I ./inc //-L指定库文件路径,-I指定头文件路径
程序运行
将a.out拷贝到开发板指定目录下
将libfun.so拷贝到开发板的/lib目录下
执行程序
5.静态库的生成&使用
gcc -c fun.c -o fun.o
ar -rcv libfun.a fun.o
gcc man.c libfun.a //库文件被静态编译成可执行文件,运行时只需要执行可执行文件即可