【问题标题】:Tell which symbols are linkable in object file?告诉目标文件中哪些符号是可链接的?
【发布时间】:2025-12-06 08:45:01
【问题描述】:

有没有办法查看目标文件并知道可以链接到哪些符号?假设调试信息可用。我知道有些符号是未定义的,但我想知道是否有办法查看目标文件并知道“是的,我是否可以调用该函数”

【问题讨论】:

  • 取决于您的工具链。对于 gcc 或 clang,您可以使用 nm 工具列出目标文件或库的符号。
  • 是的,所以我使用 nm,但我不清楚哪些符号可以链接到
  • 如果你打电话给man nm,会有一个用于指示哪些符号是公开可见的字母的解释。
  • 公开可见是什么意思?我假设是可链接的,但如果未定义的符号正确,那不一定能防止链接错误?
  • “什么是公开可见的?” 可从其他 .o 或 .a 文件链接。

标签: c++ c


【解决方案1】:

如果您在 bash 中使用命令 nm,它将显示目标文件的表符号。 W(全局弱)T(全局文本)之类的大写符号是您可以与其他对象一起使用的符号,这些对象链接到您使用 nm 的对象。

【讨论】:

    【解决方案2】:

    如果你在 unix 上检查 readelf。在 Windows 上检查 dumpbin。

    【讨论】:

      最近更新 更多