有像.dll或.so这样的东西,但跨平台吗?
答案 0 :(得分:8)
Java .class文件和.jar存档将满足此要求,在Mono下运行的.Net程序集也将满足此要求。
答案 1 :(得分:5)
通用可执行格式?没有。
这就是存在虚拟机(java)或IL(.Net)的全部原因 - 因此相同的源代码可以编译成通用的中间语言,然后可以由底层系统字节码中的框架执行没有程序员必须知道系统之间的差异。
实际上,必须在所有平台上始终如一地实施VM。
答案 2 :(得分:4)
不适用于c / c ++ AFAIK,但java的.jar文件有点类似。
答案 3 :(得分:2)
目前尚不清楚你在问什么,但如果你问“我怎样才能以跨平台的方式制作可动态加载的C / C ++库”,那么答案就是GNU Libtool。它支持构建和使用它们,以及运行时支持功能
答案 4 :(得分:1)
正如其他人所说,并非如此。也许LLVM有一天会弥合这个差距,这使得我们可以像查看静态/动态对象库那样查看LLVM等价物。
请查看this reply,了解静态对象库通常不可移植的一些原因。我说一般是因为有时候 - 如果操作系统供应商足够关心 - 有可能 - 比如freebsd执行linux二进制文件,或WINE实现win32运行时的很大一部分。
答案 5 :(得分:0)
二进制目标文件几乎总是绑定到特定平台。正如其他人已经说过的那样,最接近平台独立性的目标文件格式可能是.NET / Mono程序集和Java字节码。
也就是说,如果你想要真正的平台独立性,你可能最好使用源代码(如果这是一个选项)。我知道这不是你要求的,但考虑到现在,如果你的C ++代码本身与平台无关,那么你将能够在大多数机器上编译C ++程序(例如使用GNU编译器集合)。