sanni schriebWenn ich mir diesen Thread so ansehe, ist es kein Wunder, dass mir nicht wirklich klar sein konnte, was configure genau ist!!! 😃
Aber man soll ja die Hoffnung nicht aufgeben.
Allen eine guten Start die die neue, kurze Woche,
Sanni
Zumal es in Wirklichkeit hier noch vereinfacht dargestellt wurde.
portix schriebKinch schriebBomb@ schrieb
Das macht Make. ./configure bereitet nur die Optionen für make vor.
configure generiert das makefile, welches das Programm baut und installiert, deswegen würde ich schon sagen, dass configure das bauen und installieren übernimmt. Aber wenn man es genau nimmt: Configure macht natürlich gar nichts, weil es nur eine Text-Datei ist. Ein C-Programm interpertiert diese Text-Datei, die eine Text-Datei produziert, welches von einem anderen C-Programm interpretiert wird (unter Hilfe des Kernels). Und da C-Programme auch nur normale Dateien sind, die von der CPU interpretiert werden, macht eigentlich alles die CPU. Ja, also wenn dich jemand fragt: „was macht eigentlich configure?”, sagst du am besten „gar nichts, aber wenn du bauen und installieren willst, nimm am besten die CPU“.
Grüße
Zu sagen, dass configure das bauen und installieren übernimmt ist schlicht falsch. Wenn überhaupt dann übernimmt make das bauen und installieren. configure ist nur dazu da ein Makefile zu generieren.
Das Installieren übernimmt das configure-Skript nie. Das macht, wenn überhaupt, der make-Aufruf mit der Option install mit Hilfe des Makefiles. Aber configure kann durchaus mehr als ein Makefile generieren. Es ist soger eher der Normalfall, dass mehrere Makefiles in der Tiefe der Verzeichnisschluchten rekursiv generiert werden. Das ist allerdings ein gnu-make-Feature, die alten make-Geschmacksrichtungen konnten das nicht.
Und um die Sache entgültig zu verkomplizieren: Manchmal wird selbst das configure-Skript gar nicht mitgeliefert, sondern beim Aufruf eines Skriptes, das dann oft autogen.sh, manchmal aber such wieder anders, heißt, generiert. In diesem Fall werden Dateien namens configure.in und Makefile.am mitgeliefert. Dieser der Fall tirii besonders oft, aber nicht nur, ein, wenn man sich die Sourcen nicht per Tarball, sondern per VCS (git, svn, cvs, mercurial, bazaar oder dergleichen) herunterlädt.
Das Ganze kann wirklich beliebig kompliziert werden. Daher gibt es neben make auch noch andere Buildtools, die das Ganze einfacher gestalten sollen. Zum Beispiel das schon genannte cmake (wobei die nur den configure-Part ersetzt und weiterhin make benötigt), scons, waf, jam ... usw.
Falls du selber Projekte hast, die du mit einem Buildsystem versehen willst, würde ich zu einem moderneren System raten, z.B. waf. Wenn du nur bestehende Projekte selber übersetzen willst, must du dich vermutlich in verschiedene Systeme rudimentär einarbeiten. Schau dir in diesem Fall am besten wirklich einmal PKGBUILDs an.