2010-01-25 23 views
5

¿hay algo así como .dll o .so, pero multiplataforma?¿Hay algo como .dll o .so, pero multiplataforma?

+1

no me refiero a la compatibilidad binaria – SomeUser

+0

y la naturaleza rígida de DLL y SO (compatibilidad binaria) es lo que hace que tengan poderosa semántica y grandes debilidades. ¿Qué estás tratando de preguntar exactamente? –

+0

quise decir: programm y cada compilador dll para cada plataforma – SomeUser

Respuesta

2

No está claro lo que está preguntando, pero si se pregunta "¿cómo puedo crear bibliotecas C/C++ dinámicamente cargables de forma multiplataforma?", La respuesta es GNU Libtool. Tiene soporte para compilarlos y consumirlos, además de las funciones de soporte de tiempo de ejecución

4

no para c/C++ AFAIK, java tiene archivos .jar que son algo así como análogos.

8

Los archivos Java .class y los archivos .jar cumplirán este requisito, al igual que los ensamblados .Net que se ejecutan bajo Mono.

+1

Realmente no cumplen el requisito por una plétora de razones: no pregunta si hay idiomas que tienen una unidad de compilación que es la arquitectura y la indepementación del proveedor:/No debe indicar tales totalidades audaces sin ninguna exención de responsabilidad. –

+0

La pregunta dice "¿hay algo así como ...". Creo que lo anterior se ajusta bastante bien a ese 'requisito'. No estoy hablando de idiomas en el anterior. Estoy hablando de plataformas (JVM o .Net) –

6

¿Un formato ejecutable universal? No.

Esa es la razón de la existencia de máquinas virtuales (java) o IL (.Net) - por lo que el mismo código fuente se puede compilar en un lenguaje intermedio universal, que luego puede ser ejecutado por el marco en el código de bytes del sistema subyacente sin que el programador tenga que conocer las diferencias entre los sistemas.

En la práctica, la máquina virtual debe implementarse constantemente en todas las plataformas.

1

Como han mencionado otros, realmente no. Quizás LLVM un día cerrará la brecha permitiéndonos ver los equivalentes de LLVM como lo hacemos con las bibliotecas de objetos estáticos/dinámicos.

Eche un vistazo a this reply por algunos de los motivos por los que las bibliotecas de objetos estáticos generalmente no son portátiles. Digo en general porque a veces, si los proveedores del sistema operativo se preocupan lo suficiente, es posible, como freebsd ejecutando binarios de Linux, o WINE implementando una gran parte del tiempo de ejecución de win32.

0

Los archivos de objetos binarios casi siempre están vinculados a una plataforma en particular. Como otros ya han dicho, los formatos de archivo objeto que se acercan más a la independencia de la plataforma podrían ser ensamblados .NET/Mono y bytecode de Java.

Dicho esto, si quieres verdadera independencia de la plataforma, que podría ser mejor descuento con el código fuente (si eso es una opción). Sé que esto no es lo que preguntas, pero considera que en estos días podrás compilar un programa C++ en la mayoría de las máquinas (por ejemplo, con la Colección de compiladores GNU), si tu código C++ es independiente de la plataforma.