库的介绍
静态库和动态库都是ELF格式的文件,通过编译得来的
普通程序是被./运行
库是被执行但是不能被运行不能./也没有main函数
执行:可以中途来回加载到内存
库是用来存放有价值的函数接口
静态库:.a
特点:调用函数库的程序源码要和库文件一起编译,导致程序文件偏大,平台转移的时候直接烧写即可
制作方式:
第一步:使用gcc生成.o文件
gcc -c goal.c -o goal.o
第二步:使用ar编译器生成.a静态库
ar -cr -o face.a face.o
-o:目标文件
c:创建一个空的库
r:把模块加入到库中
使用方式:
gcc -o file file.c libgoal.a
动态库:.so
** 特点 :调用函数库的程序源码只需指定链接库即可,在转移平台的时候需要城区连同库一起烧写过去**
制作方式:
第一步:使用gcc生成.o文件
gcc -fPIC -c goal.c -o goal.o
-fPIC:使生成的代码和内存无法访问
第二步:使用gcc生成.so文件
gcc -share goal.o -o libgoal.so (不是真正意义共享)
-fPIC
没有-fPIC:
有固定地址去加载运行