美文网首页程序员
静态库和动态库

静态库和动态库

作者: Just_go | 来源:发表于2021-01-21 22:56 被阅读0次

    embed的意思 是嵌入, 动态库用do not embed, 保证全局唯一, 静态库用embed, 可能会重复引用, 造成包体积大

    1. 两个静态库中如果有相同的静态库(比如系统的libc++, libstdc++), 那么暴露的类或者方法也可能会有多份, 造成无效或者冲突导致崩溃
    2. 动态库打包的时候选择do not embed, 否则这个动态库中静态库如果包含了相同的动态库, 那么暴露的类或者方法也可能会有多份, 造成无效或者冲突导致崩溃(AppService中包含静态库魔链, 在引入佳物的静态库, 编译成功后执行到某方法就会报错)
    3. 静态库一定要选择embed, 否则会报 undefined symbol, (ps: image not found 一般是动态库找不到)
    4. 如果在动态库中有静态库, 则需要通过脚本在主工程中将静态库embed, 这样在工程在编译的时候会把pods中静态库单独拎出来打到主工程的二进制中, 剩下的动态库统一打在pods库中, 全局唯一, 否则该动态库会报no such module,
    5. 解决两个静态库冲突的办法, 就是将两个静态库打到不同的动态库中, 这样他们就会被打包成不同的二进制, 就不会互相链接, 就不会互相影响了

    相关文章

      网友评论

        本文标题:静态库和动态库

        本文链接:https://www.haomeiwen.com/subject/khejzktx.html