动态库(-fPIC)和静态库的制作

库的介绍

静态库和动态库都是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:
有固定地址去加载运行

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值