为啥有些库需要嵌入而有些则不需要?

Posted

技术标签:

【中文标题】为啥有些库需要嵌入而有些则不需要?【英文标题】:Why some libraries need to be embedded and some other not?为什么有些库需要嵌入而有些则不需要? 【发布时间】:2018-12-04 22:09:02 【问题描述】:

ios中,我不明白为什么有些库需要嵌入(如WebRTC)而有些则不需要(如facebook)?

【问题讨论】:

【参考方案1】:

Facebook 的框架是静态库。这在 iOS 中有点不寻常;大多数东西都是动态库。静态库是在构建时而不是在加载时链接的,因此您不需要嵌入它们。

【讨论】:

谢谢!您是否如何(手动)在项目(不是用 xcode 制作的)中嵌入动态库?我们只需要使用应用程序部署库吗? 如果您手动构建它们,那么您需要将库放在您链接到的目录中(相对于@rpath)。这通常在框架中,但这取决于您构建应用程序的方式。应用程序上的otool -L 会告诉您它希望从哪里加载库。 我刚做了,otool -L ALLiveVideoChatClient.app/ALLiveVideoChatClient 返回我:@rpath/WebRTC.framework/WebRTC(兼容版本0.0.0,当前版本0.0.0)....什么是@rpath 的值吗?我确实像你说的那样,将库放在框架中(ALLiveVideoChatClient.app/Frameworks/WebRTC.framework/WebRTC),但它在加载时总是失败:@rpath/WebRTC.framework/WebRTC:找不到图像:(所以也许我的rpath 不好,但是如何从链接器更新它? 我总是收到此错误:DYLD,未加载库:@rpath/WebRTC.framework/WebRTC |引用自:/var/containers/Bundle/Application/E60EAD9F-0CB6-4B13-80B3-3ED71B562BAB/ALLiveVideoChatClient.app/ALLiveVideoChatClient |原因:找不到图像,但我很好地复制了 ALLiveVideoChatClient.app/Frameworks/WebRTC.framework/WebRTC 中的库,所以我做错了什么?也许我需要设置@rpath?如何检查它的价值? ***.com/questions/24045633/… 如果您在链接时遇到问题,您需要打开一个新问题,说明您的构建方式以及遇到的问题。

以上是关于为啥有些库需要嵌入而有些则不需要?的主要内容,如果未能解决你的问题,请参考以下文章

新手学习嵌入式需要掌握的几点知识点

嵌入式实时操作系统10——系统时钟节拍

为啥有些网站需要“www”? [关闭]

从 C++ 库中嵌入 Java 代码而不需要***程序来嵌入它?

嵌入式软件架构设计

Linux嵌入式所有知识点-思维导图-一口君吐血奉献