如何将钴构建为共享库?
Posted
技术标签:
【中文标题】如何将钴构建为共享库?【英文标题】:How to build cobalt as a shared library? 【发布时间】:2018-06-01 06:27:55 【问题描述】:我想将钴作为浏览器集成到我的项目中。计划是通过将钴作为共享库来实现这一点。详细解释将不胜感激。
我的具体问题是如何将钴浏览器构建为共享库。
【问题讨论】:
尝试在cobalt.gyp文件中创建一个目标为cobalt_shared_lib,类型为“shared_library”,但构建给我的错误是目标cobalt_shared_lib不支持“shared_library”。但是,如果使用“static_library”而不是“shared_library”作为类型,则构建相同的目标时不会出现任何错误。 我们目前不支持将 Cobalt 构建为共享库,也没有相关指南。你能解释一下为什么需要 Cobalt 作为共享库以及“我想在我的项目中集成 Cobalt 作为浏览器”吗?详细的意思? 套用 Daniel 的问题:您如何想象这样一个库的 API 是什么样的? @Midhun 这是一个软提醒。 @DanielJuyungSeo 感谢您的提问。我们想构建另一个使用来自钴的 api 的应用程序。对于特定的设备目标,我们需要它。如果我们可以拥有一个共享库,那么我们就可以创建使用钴浏览器库功能的最终用户应用程序。这样可以避免我们发布源代码。 【参考方案1】:将 Cobalt 集成到另一个二进制文件中的最简单方法是将 Starboard 实现中的 main()
函数(我假设您的操作系统类似于 POSIX)重命名为 cobalt_main()
并更改 @987654324 中的 type
@target(位于cobalt/browser/cobalt.gyp
)到shared_library
。更深层次的集成需要更多的努力。
我不太确定您是否需要将 Cobalt 构建为共享库。也许您可以简单地运行相同的 Cobalt 二进制文件,但将其指向另一个应用程序?
【讨论】:
我尝试了你说的方法,但实际上导致了以下错误,还有很多但都是同一类型的。error: ../../cobalt/base/wrap_main_starboard.h:34: can't create dynamic relocation R_X86_64_32S against symbol '__asan_option_detect_stack_use_after_return' defined in obj/cobalt/browser/cobalt.main.o
我也一直在寻找这个R_X86_64_32S
。这是什么,为什么会导致错误。以上是关于如何将钴构建为共享库?的主要内容,如果未能解决你的问题,请参考以下文章