【发布时间】:2011-01-09 07:40:49
【问题描述】:
是否有类似 .dll 或 .so,但跨平台的东西?
【问题讨论】:
-
我不是指二进制兼容性
-
好吧,DLL 和 SO(二进制兼容性)的刚性特性导致它们具有强大的语义和很大的弱点。你到底想问什么?
-
我的意思是:每个平台的程序和每个 dll 编译器
标签: c++ dll shared-objects
是否有类似 .dll 或 .so,但跨平台的东西?
【问题讨论】:
标签: c++ dll shared-objects
Java .class 文件和 .jar 档案将满足此要求,在 Mono 下运行的 .Net 程序集也将满足此要求。
【讨论】:
通用的可执行格式?没有。
这就是虚拟机 (java) 或 IL (.Net) 存在的全部原因 - 所以相同的源代码可以编译成通用中间语言,然后可以由框架在底层系统字节码中执行程序员不必知道系统之间的差异。
实际上,VM 必须在所有平台上一致地实现。
【讨论】:
不适用于 c/c++ AFAIK,java 具有类似的 .jar 文件。
【讨论】:
不清楚你在问什么,但如果你问“我怎样才能以跨平台的方式制作可动态加载的 C/C++ 库”,那么答案是GNU Libtool。它支持构建和使用它们,以及运行时支持功能
【讨论】:
正如其他人所提到的,并非如此。也许LLVM 有朝一日会弥合这一差距,让我们可以像处理静态/动态对象库一样查看 LLVM 等价物。
查看this reply 了解静态对象库通常不可移植的一些原因。我之所以这么说是因为有时——如果操作系统供应商足够关心——这是可能的——比如 freebsd 执行 linux 二进制文件,或者 WINE 实现了大部分 win32 运行时。
【讨论】: