Hmmm, wie erkläre ich es meinem Kinde? ;-)
Normalerweise erfindet man das Rad ja nicht 2 mal. Es gibt schon reichlich viele "fertige" Bibliotheken. Wenn man nun z.B. ein eigenes Programm kompiliert, kann man diese fertigen Bibliotheken verwenden (und braucht somit die Funktionalität nicht nochmal selber programmieren).
Es gibt beim Kompilieren 2 Möglichkeiten:
1) Entweder kompiliert man dynamisch, dann wird aus dem eigenen Code heraus lediglich die existierende Bibliothek referenziert. Man benötigt also beides, das eigene Binary und das der Bibliothek.
2) Man kann die aus einer Bibliothek verwendeten Funktionalitäten auch mit in das eigene Binary übernehmen. Damit braucht man nur noch ein Binary.
Beides hat Vor- und Nachteile. Beim ersten Punkt kann man viel Platz sparen, wenn viele Programme die gleiche Bibliothek verwenden. Denn dann braucht die Bib. nur einmal existieren. Allerdings muss diese Bibliothek dann im "Suchpfad" zu finden sein, damit das Betriebssystem die Bibliothek auch findet. Beim 2. Punkt hat man alles in einem, das hat Vorteile, wenn die Bibliothek sowieso nur von einem Programm verwendet wird. Und auch dann, wenn man keine einfache Möglichkeit hat, dem Betriebssystem neue Bibliotheken unter zu schieben.
Aber um schließlich die Frage zu beantworten:
1) ist dynamisches Linken
2) ist statisches Linken
Hoffe, das war verständlich.
@Silent-Tears: Du warst schneller, aber jetzt hatte ich schon sooo viel getippt