Wenn ich ein Programm mit gcc kompiliere und versuche, es über die Bash-Shell auszuführen, wie lautet die genaue Reihenfolge der Schritte, gefolgt von Bash, um es auszuführen?
Ich weiß fork()
, execve()
, loader
, dynamic linker
(und andere Dinge) beteiligt sind, aber kann jemand eine genaue Abfolge von Schritten und eine geeignete Lesereferenz geben?
Bearbeiten:
Aus den Antworten geht hervor, dass die Frage viele Möglichkeiten implizieren könnte. Ich möchte mich auf einen einfachen Fall beschränken:
(test.c druckt nur Hallo Welt)
$ gcc test.c -o test
$ ./test
Was sind die Schritte im obigen Fall ( ./test
), die sich speziell auf das Bash-Startprogramm in einem untergeordneten Prozess beziehen, das Laden, Verknüpfen usw.?