2010-01-25 3 views
5

gibt es sowas wie .dll oder .so, aber plattformübergreifend?Gibt es sowas wie .dll oder .so, aber plattformübergreifend?

+1

ich bin nicht gemeint Binärkompatibilität – SomeUser

+0

gut die Starrheit der DLL und SO (Binärkompatibilität) ist, was bewirkt, dass sie starke Semantik und große Schwächen haben. Was genau willst du fragen? –

+0

Ich meinte: Programm und jeder DLL-Compiler für jede Plattform – SomeUser

Antwort

2

Es ist nicht klar, was Sie fragen, aber wenn Sie fragen "Wie kann ich dynamisch ladbar C/C++ Bibliotheken in einer plattformübergreifenden Weise machen", dann ist die Antwort GNU Libtool. Es hat Unterstützung für den Aufbau und den Verbrauch von ihnen, plus Runtime-Support-Funktionen

4

nicht für c/C++ AFAIK, Java hat .jar-Dateien, die eine Art analog sind.

8

Java .class-Dateien und .jar-Archive erfüllen diese Anforderung ebenso wie .NET-Assemblys, die unter Mono ausgeführt werden.

+1

Sie erfüllen nicht wirklich die Voraussetzung für eine Vielzahl von Gründen - er fragt nicht, ob es Sprachen gibt, die eine Übersetzungseinheit haben, die Architektur und Herstellerunabhängigkeit ist:/Sie sollten solche kühnen Totalitäten nicht ohne Disclaimer angeben. –

+0

Die Frage lautet: "Gibt es etwas wie ...". Ich denke, dass das oben genannte "Anforderung" ziemlich gut passt. Ich spreche nicht über Sprachen in den oben genannten. Ich spreche von Plattformen (JVM oder .Net) –

6

Ein universelles ausführbares Format?

Das ist der ganze Grund für die Existenz von virtuellen Maschinen (Java) oder IL (.Net) - also kann der gleiche Quellcode in eine universelle Zwischensprache übersetzt werden, die dann vom Framework in der zugrunde liegenden System-Bytecode, ohne dass der Programmierer die Unterschiede zwischen den Systemen kennen muss.

In der Praxis muss die VM auf allen Plattformen konsistent implementiert werden.

1

Wie andere erwähnt haben, nicht wirklich. Vielleicht wird LLVM eines Tages die Lücke überbrücken und es uns erlauben, LLVM-Äquivalente zu betrachten, wie wir es mit statischen/dynamischen Objektbibliotheken tun.

Werfen Sie einen Blick auf this reply aus einigen der Gründe, warum statische Objektbibliotheken in der Regel nicht tragbar sind. Ich sage generell, weil manchmal - wenn die OS-Anbieter genug kümmern - es möglich ist - wie freebsd Linux-Binärdateien auszuführen, oder WINE einen großen Teil der Win32-Laufzeit implementiert.

0

Binäre Objektdateien sind fast immer an eine bestimmte Plattform gebunden. Wie andere bereits gesagt haben, sind die Objektdateiformate, die der Plattformunabhängigkeit am nächsten kommen, möglicherweise .NET/Mono-Assemblies und Java-Bytecode.

Das heißt, wenn Sie echte Plattform Unabhängigkeit wollen, könnten Sie am besten mit Quellcode (wenn das eine Option ist). Ich weiß, dass dies nicht das ist, was Sie fragen, aber bedenken Sie, dass Sie heutzutage ein C++ - Programm auf den meisten Computern (z. B. mit der GNU Compiler Collection) kompilieren können, wenn Ihr C++ - Code selbst plattformunabhängig ist.

Verwandte Themen