Przygotujcie się, to pytanie prawdopodobnie będzie naiwne i / lub głupie, ponieważ jestem stosunkowo nowy w wewnętrznych działaniach systemów uniksowych i programowaniu w ogóle.
Gotowy? Dobrze! Przejdę przez około 3 poziomy ludicrosity, wzrastając wraz z upływem czasu.
Mamy dwa systemy z podobnym sprzętem (głównym celem jest procesor, powiedzmy standardowy duet Intel Core 2).
Jeden jest uruchomiony (wstaw tutaj swoją dystrybucję Linuksa: Ubuntu będzie odtąd używany), a drugi działa powiedzmy Mac OS X.
Kompiluje się równoważny program, powiedzmy coś takiego:
int main()
{
int cat = 33;
int dog = 5*cat;
return dog;
}
Kod jest niezwykle prosty, ponieważ nie chcę jeszcze rozważać konsekwencji bibliotek współdzielonych.
Po skompilowaniu w odpowiednich systemach. Czy główna różnica między wydajnością nie jest kwestią ELF a Mach-O? Gdyby rozebrać każdy plik binarny formatowania, pozostawiając płaski plik binarny, czy zdemontowane instrukcje maszyny nie byłyby takie same? (może z kilkoma różnicami w zależności od nawyków / tendencji kompilatorów).
1.) Gdyby opracować program do przepakowywania płaskiego pliku binarnego wyprodukowanego z naszego systemu Ubuntu, w formacie Mach-O, czy działałby on w systemie Mac OS X? Zatem, jeśli ktoś miałby tylko skompilowany plik binarny rzekomego programu powyżej i miałby to mistyczne narzędzie do przepakowywania płaskich plików binarnych, czy proste programy byłyby w stanie uruchomić na systemie Mac OS X?
Przejdźmy teraz dalej.
Mamy teraz program ze źródłem takim jak:
#include <stdio.h>
int main()
{
printf("I like tortoises, but not porpoises");
return 0;
}
2.) Zakładając, że ten program jest skompilowany i statycznie powiązany, czy nasz magiczny program nadal byłby w stanie ponownie spakować surowy plik binarny w formacie Mach-O i czy działa na Mac OS X? Ponieważ nie trzeba polegać na żadnych innych plikach binarnych (dla których system mac nie miałby w tym przypadku)
A teraz do ostatniego poziomu;
3.) Co, jeśli użyjemy tego rzekomego programu do konwersji wszystkich niezbędnych bibliotek współdzielonych do formatu Mach-O, a następnie skompilujemy powyższy program z dynamicznym łączeniem. Czy program nadal będzie działał?
Tak powinno być na razie, oczywiście każdy etap absurdu opiera się na poprzedniej bazie, aby nawet mieć sens. więc jeśli pierwszy filar zostanie zniszczony, wątpię, czy pozostałe poziomy będą miały wiele zalet.
Zdecydowanie nie posunęłbym się nawet tak daleko, by myśleć o tym z programami z myślą o GUI. Systemy okien prawdopodobnie byłyby zupełnie innym problemem. Na tym etapie rozważam tylko programy wiersza poleceń.
Teraz zapraszam świat, aby mnie poprawił i powiedział mi wszystko, co jest nie tak z moim absurdalnym tokiem myślenia.