Esto suena como una pregunta tonta al principio, pero tengan paciencia conmigo.¿Qué parte (específicamente) de un ejecutable nativo lo hace no portátil?
Es de conocimiento común que los binarios para una arquitectura de CPU no se ejecutan en otros. Entonces, por ejemplo, es imposible ejecutar (sin una capa de compatibilidad de algún tipo), un binario x86 en un chip sparc64. Los conjuntos de instrucciones son diferentes, por lo que claramente no funcionará.
Pero cuando el binario es para la misma CPU, pero para un sistema operativo diferente, qué parte del código impide que la ejecución sea posible. Por ejemplo, ejecutando un binario Solaris x86 en una caja Linux x86. ¿Asumo que hay algún tipo de código auxiliar específico de la plataforma que se relaciona con el enlazador en tiempo de ejecución o el planificador de procesos?
Me gustaría saber. Gracias.
Las razones 1, 2 y 3 son muy fáciles de corregir. Linux ya es compatible con una gran cantidad de formatos ejecutables. Se podrían crear nuevas interrupciones con un módulo de kernel cargable. Y las llamadas al sistema generalmente se corresponden bastante bien entre diferentes sistemas operativos. – Zifre
Debería haber dicho que estamos asumiendo ELF :) Gracias por la respuesta. –