iOS动态库、静态库与连接

动态库合并:

.m文件经过编译器,汇编器,生成一个mach-o中间文件,.o文件不能被执行,要经过连接器,生成一个可执行文件exec 和动态库dylib。

中间文件.o已经生成了汇编,代码成为__TEXT和__DATA方便连接。可以理解mach-o是一个配置文件+编译后的产物。

dyld作用:

    1.加载可执行文件,2加载动态库。

.dyld动态库已经分配了虚拟内存地址,如何合并?

    不能合并。

不同架构的动态库合并以后的本质就是两个动态库。合并lipo命令本质就是两个动态库放在一起,dylib连接的还是两个。

静态库(本质就是.o文件的合集)合并:

静态库合并OC不难,Swift静态库麻烦的地方:就是文件位

动态库格式,和上架的问题:

动态库格式:

1.dylib

2.framework = .h+资源文件+库文件(静态库/动态库有签名就可以上架())

动态库加了签名就不能在进程中分享。

3.xc

app也可以调用app的代码

动态库也可以调用app的代码,连接的时候找不是编译的时候找,连接器传参Other Linker Flags;-Xlinker告诉它参数是传给连接器的。-Xlinker -u xxx

动态库反向依赖,所有符号加载完毕就可以加载到。

静态库中调用静态库:

需要借助app进行连接。

动态库中调用静态库

比较简单,连接过程中,把静态库代码合并过来,直接编译成功。

动态库中调用动态库:

编译不报错,运行失败。

因为动态库是运行时进行动态连接的,只有运行才会去查找动态库。

静态库中调用静态库:

Cocoapods签名,合并静态库是启动优化方法

拿到源码的库就进行合并。

静态库中调用动态库:

app使用静态库的时候,把静态库代码都加载在app了,使用framework search path。

那种库会让你的app变大?

理论上动态库大,静态库默认有ld的配置,dead code strip,进行不需要用的代码进行剥离,所以静态库会小一点。

实际上进行剥离的过程中,all- load -object等一些连接器参数配置,在otherlink里,传给ld,这些代码都会所有代码加载,就有可能造成静态库也很大。

apple 对于app大小的限制,__TEXT 限制500MB,静态库合并在了__TEXT字段里,动态库不在这里,所以可以抉择放在静态库和动态库里结合使用。

app - A动态库 - B动态库,app可访问B动态库吗?

    app只能访问A动态库,B符号不对app可见。编译失败。B动态库只对A可见。方法:如果需要B对APP可用,使用re-Exported Framework 也重新吧B动态库暴露给app使用。

app - A动态库 - B静态库,B静态态库如何隐藏?

    可以,配置-hidden-l。

一个动态库代表一个空间,重复符号的没关系会忽略。

动态库和静态库本质就是link的问题,在生成.o之前都一样,后面动态库比静态库多的一节就是动态连接。

静态库可以生成动态库,动态库不可以合并。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,122评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,070评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,491评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,636评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,676评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,541评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,292评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,211评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,655评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,846评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,965评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,684评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,295评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,894评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,012评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,126评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,914评论 2 355

推荐阅读更多精彩内容