5

is there something like .dll or .so, but cross-platform?

Eagle-Eye
  • 1,468
  • 2
  • 18
  • 26
SomeUser
  • 1,976
  • 15
  • 42
  • 60

5 Answers5

8

Java .class files and .jar archives will fulfil this requirement, as will .Net assemblies running under Mono.

Brian Agnew
  • 268,207
  • 37
  • 334
  • 440
  • 2
    They don't really fulfill the requirement for a plethora of reasons -- he isn't asking if there are languages which have a compilation unit that is architecture and vendor indepement :/ You shouldn't state such bold totalities without any disclaimers. – Hassan Syed Jan 25 '10 at 22:45
  • The question say "is there something like...". I think the above fits that 'requirement' quite well. I'm not talking about languages in the above. I'm talking about platforms (JVM or .Net) – Brian Agnew Jan 25 '10 at 23:02
6

A universal executable format? No.

That's the whole reason for the existence of virtual machines (java) or IL (.Net) - so the same source code can be compiled into a universal intermediate language, that can then be executed by the framework in the underlying system bytecode without the programmer having to know the differences between the systems.

In practice, the VM has to be consistently implemented on all platforms.

womp
  • 115,835
  • 26
  • 236
  • 269
4

not for c/c++ AFAIK, java has .jar files that are sort of analogous though.

vicatcu
  • 5,407
  • 7
  • 41
  • 65
3

It's not clear what you are asking, but if you are asking "how can I make dynamically loadable C/C++ libraries in a cross-platform manner," then the answer is GNU Libtool. It has support for building and consuming them, plus runtime support functions

Eagle-Eye
  • 1,468
  • 2
  • 18
  • 26
pm100
  • 48,078
  • 23
  • 82
  • 145
1

As others have mentioned, not really. Perhaps LLVM will one day bridge the gap allowing us to look at LLVM equivalents as we do static/dynamic object libraries.

Take a look at this reply for some of the reasons why static object libraries aren't generally portable. I say generally because sometimes -- if the OS vendors care enough -- it is possible -- like freebsd executing linux binaries, or WINE implementing a large part of the win32 runtime.

Community
  • 1
  • 1
Hassan Syed
  • 20,075
  • 11
  • 87
  • 171