将一个静态库(.a)链接/打包到动态库中。

本文介绍了如何将静态库(.a)完整地链接到动态库(.so)中,包括使用特定链接选项的方法以及注意事项。讨论了动态库在不同应用程序间共享的机制,强调了进程间同步的重要性,以及动态库应自包含以避免依赖问题。

1, 如果简单用-l的方式,则so只会链接lib中需要的符号,如果需要将所有符号都塞到SO里面,可以用下面的方法:

http://stackoverflow.com/questions/7935421/linking-archives-a-into-shared-object-so

Use -Wl,--whole-archive for the linking to include the entire .a file Edit, you'll need to add -Wl,--no-whole-archive after you specify your library as well, so the whole thing will be -Wl,--whole-archive archive1.a archive2.a -Wl,--no-whole-archive


2,一个so链接到多个app

1)app运行时会自动加载需要的so文件

2)多个app可以共用so文件的代码段,但数据段是独立的

参考linker and loader

3)对于临界区代码需要增加进程间的互斥处理

4)so必须是自成系统,如果对某个app其他代码有依赖,就会在其他app找不到符号。

5)可以用不同的初始化&适配函数来定制so提供的功能。







评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值