【问题标题】:Do I need to build LLDB locally to use C++ interface?我是否需要在本地构建 LLDB 才能使用 C++ 接口?
【发布时间】:2013-10-01 21:29:51
【问题描述】:

我已经安装了 XCode 5,我可以使用命令行 lldb 就好了。现在我想创建自己的应用程序,该应用程序将与 LLDB C++ 接口链接。我试图搜索 XCode 包,但没有找到 .a 档案,也没有标题。这是否意味着我需要在本地构建 LLDB(并通过签名过程)?

【问题讨论】:

标签: xcode llvm lldb


【解决方案1】:

Xcode自带的LLDB.framework中没有包含头文件确实是正确的

话虽如此,您有两种可能的途径:

  • 如您所说,从源代码构建 LLDB,然后使用构建的 ToT 编写您的应用程序
  • 从我们的开源存储库中获取标头并将它们放在 Xcode 提供的 LLDB.framework 中的神奇位置,这样您就可以成功地链接到您拥有的任何 LLDB。

咒语应该是在 LLDB.framework/Versions/A 中创建一个 Headers 文件夹,并将所有 PUBLIC 标头从我们的来源复制到那里(您需要 LLDB.h,所有 SB*. h 文件和 lldb-defines,enumerations,forward,public,types,versioning.h) - 然后进入 LLDB.framework 并创建一个名为 Headers to Versions/Current/Headers 的符号链接

仅供参考 - 公共 API (SB*.h) 几乎得到支持,并保证相对稳定。如果您开始尝试使用私有层 (lldb_private::*),您将只能靠自己,并且随着调试器内部结构的发展,损坏可能会相当频繁

【讨论】:

  • 谢谢。我目前正在尝试构建它。您是否偶然知道 LLDB 3.3 是否不能使用 XCode5 构建?我昨天试过了,显然是由于平台 SDK 中的标头问题而失败了,我没有时间进一步研究。
  • 在 Enrico 的仅供参考上,我想变得更强大一些。如果您使用 lldb_private API,您不仅会暴露于 API 的变化,还会暴露于其底层所有对象的大小变化。您的代码几乎可以保证仅适用于您在构建代码的同时构建的 lldb 版本。 OTOH,我们很高兴将有用的 API 添加到 SB API 集中,因此,如果您发现任何在 lldb_private API 中但不在 SB API 中的内容,请随时添加它并向 lldb-dev 团队提交补丁。您可以访问 lldb.llvm.org 了解更多信息。
  • 老实说我不确定。 3.3 和类似版本是 LLVM 修订版号,通常对 LLDB 意义不大。 LLDB 倾向于使用自己的版本号(例如 LLDB-300.xy),因此了解 3.3 选择了哪个(如果有)LLDB 版本,或者它是否最终只是一个随机的 SVN 修订版会很有趣。
  • Xcode 中包含的 LLDB 框架可能有一些 Apple 自己的补丁,并且不太可能与当前开源的 LLDB 公共 API 兼容。 Apple 正在提供他们的 LLDB 源代码,但它是非常旧的版本 (310.x),并且似乎不适用于 Xcode 的当前版本 (320.x)。 (它不适用于我的快速测试,但我可能会遗漏一些东西)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-23
  • 2022-06-10
  • 1970-01-01
相关资源
最近更新 更多