Z początku brzmi to jak głupkowate pytanie, ale pamiętajcie o mnie.Która część (w szczególności) natywnego pliku wykonywalnego czyni go nieprzenośnym?
Powszechnie wiadomo, że pliki binarne dla jednej architektury procesora nie działają na innych. Na przykład niemożliwe jest uruchomienie (bez warstwy kompatybilności), pliku binarnego x86 na układzie sparc64. Zestawy instrukcji są różne, więc wyraźnie nie będą działać.
Ale gdy plik binarny jest dla tego samego procesora, ale dla innego systemu operacyjnego, to która część kodu uniemożliwia wykonanie. Na przykład, uruchomienie binarnego systemu Solaris x86 na pudełku Linuxa x86. Zakładam, że istnieje pewien rodzaj specyficznego dla platformy kodu pośredniczącego, który dotyczy łącznika wykonawczego lub harmonogramu procesu?
Chciałbym wiedzieć. Dzięki.
Przyczyny 1, 2 i 3 są bardzo łatwe do naprawienia. Linux już obsługuje dużą liczbę formatów wykonywalnych. Nowe przerwań można utworzyć za pomocą ładowalnego modułu jądra. A wywołania systemowe zazwyczaj dobrze korespondują między różnymi systemami operacyjnymi. – Zifre
Powinienem był powiedzieć, że zakładamy ELF :) Dzięki za odpowiedź. –