All'inizio sembra una domanda stupida, ma sopporta me.Quale parte (in particolare) di un eseguibile nativo lo rende non portatile?
È risaputo che i file binari per un'architettura CPU non vengono eseguiti su altri. Quindi, ad esempio, è impossibile eseguire (senza un livello di compatibilità di qualche tipo), un binario x86 su un chip sparc64. I set di istruzioni sono diversi, quindi chiaramente non funzionerà.
Ma quando il binario è per la stessa CPU, ma per un diverso sistema operativo, quale parte del codice impedisce l'esecuzione possibile. Ad esempio, eseguendo un file binario di Solaris x86 su una macchina Linux x86. Presumo che esista un qualche tipo di stub specifico della piattaforma che si riferisce al linker di runtime o all'utilità di pianificazione dei processi?
Sarei interessato a sapere. Grazie.
I motivi 1, 2 e 3 sono molto facili da risolvere. Linux supporta già un gran numero di formati eseguibili. Nuove interruzioni potrebbero essere create con un modulo kernel caricabile. E le chiamate di sistema di solito corrispondono abbastanza bene tra diversi SO. – Zifre
Avrei dovuto dire che stiamo assumendo ELF :) Grazie per la risposta. –