【问题标题】:Is there something like .dll or .so, but cross-platform?是否有类似 .dll 或 .so,但跨平台的东西?
【发布时间】:2011-01-09 07:40:49
【问题描述】:

是否有类似 .dll 或 .so,但跨平台的东西?

【问题讨论】:

  • 我不是指二进制兼容性
  • 好吧,DLL 和 SO(二进制兼容性)的刚性特性导致它们具有强大的语义和很大的弱点。你到底想问什么?
  • 我的意思是:每个平台的程序和每个 dll 编译器

标签: c++ dll shared-objects


【解决方案1】:

Java .class 文件和 .jar 档案将满足此要求,在 Mono 下运行的 .Net 程序集也将满足此要求。

【讨论】:

  • 它们并没有真正满足要求,原因有很多——他没有问是否有语言具有编译单元是架构和供应商独立的:/ 你不应该说如此大胆的整体,没有任何免责声明。
  • 问题是“有没有类似...”。我认为上述内容非常适合该“要求”。我不是在谈论上面的语言。我说的是平台(JVM 或 .Net)
【解决方案2】:

通用的可执行格式?没有。

这就是虚拟机 (java) 或 IL (.Net) 存在的全部原因 - 所以相同的源代码可以编译成通用中间语言,然后可以由框架在底层系统字节码中执行程序员不必知道系统之间的差异。

实际上,VM 必须在所有平台上一致地实现。

【讨论】:

    【解决方案3】:

    不适用于 c/c++ AFAIK,java 具有类似的 .jar 文件。

    【讨论】:

      【解决方案4】:

      不清楚你在问什么,但如果你问“我怎样才能以跨平台的方式制作可动态加载的 C/C++ 库”,那么答案是GNU Libtool。它支持构建和使用它们,以及运行时支持功能

      【讨论】:

        【解决方案5】:

        正如其他人所提到的,并非如此。也许LLVM 有朝一日会弥合这一差距,让我们可以像处理静态/动态对象库一样查看 LLVM 等价物。

        查看this reply 了解静态对象库通常不可移植的一些原因。我之所以这么说是因为有时——如果操作系统供应商足够关心——这是可能的——比如 freebsd 执行 linux 二进制文件,或者 WINE 实现了大部分 win32 运行时。

        【讨论】:

          猜你喜欢
          • 2013-05-05
          • 1970-01-01
          • 2010-10-22
          • 2017-12-08
          • 1970-01-01
          • 2014-02-15
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多