【问题标题】:Mach-O's two-level namespace symbol resolution in ELF/linuxELF/linux中Mach-O的两级命名空间符号解析
【发布时间】:2011-10-21 07:57:27
【问题描述】:

任何人都知道在 ELF/linux 中相当于 Mach-O 的两级命名空间符号解析吗?我想要链接到 lib+sym 的代码,而不是 sym。

我正在尝试做最好的预编译,通常是 JIT 编译。我想获得符号的编译时绑定,这通常由 dlopen/dlsym 完成。但是,可能会发生冲突,dlopen/dlsym 可以很好地避免这种情况。

似乎 ELF 实际上缺少这个,并且有 VERSION 的东西,但任何解决方法或建议都将不胜感激。

【问题讨论】:

  • 我想会有很多人知道 ELF 和 Linux,但对 Mach-O 却一无所知,比如我自己。您可能需要扩展您的问题,以简要解释您想要实现的目标。
  • 我刚刚更新了它...第一段的最后一句解释了目标,接下来的两段解释了原因。
  • 您的问题现在对我来说完全是胡言乱语(我确实了解 ELF 和(在较小程度上)Mach-O)。对于当前形式的问题,您不太可能得到很好的答案。我建议您尝试扩展和澄清它,也许可以举一个您实际尝试做的例子。
  • 假设您正在将传统解释语言编译为机器代码。该语言有一个 FFI,可让您根据 path_to_library + symbol_name 导入符号。目标是在不使用 dlopen/dlsym 的情况下将此符号引用语义编译为特定于平台的动态链接。 Mach-O 有一个消歧机制,可以让您以这种方式指定未解析的符号,从而使动态库之间的符号冲突在 mac 上不存在问题。 Windows 除了 LoadLibrary/GetProcAddress 之外没有其他机制,所以没有问题。问题是:ELF 可以做类似的事情吗?
  • 感谢您的澄清。 ELF 与 Windows 处于完全相同的位置——除了dlopen/dlsym 之外没有其他机制。

标签: linux macos linker elf mach-o


【解决方案1】:

没有 ELF 等价物(通常不需要)。

【讨论】:

【解决方案2】:

听起来你想要dlmopen

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-04
    • 2013-10-12
    • 2018-08-29
    • 1970-01-01
    • 1970-01-01
    • 2011-07-08
    • 1970-01-01
    相关资源
    最近更新 更多