Moin moin, Am Donnerstag, 14. Oktober 2004 16:21 schrieb Ralf Corsepius: [...]
Mit dieser Einleitung wollt ich nun anfangen, soweit so gut!
Nun ja, das Goat-Book ist ein wenig veraltet, aber immer noch ganz brauchbar.
Kennst Du einen besseren Link?
"Makefile.am" und "configure.in" angelegt, danach habe ich
Mit autoconf-2.59 solltest Du statt "configure.in", "configure.ac" verwenden.
Auf meinen gentoo habe ich 2.13 und 2.59 installiert, ich habe 2.13 benutzt.
aclocal autoconf automake --add-missing
Ein einmaliges "autoreconf -fi" macht alles auf einmal.
Probiere ich mal aus :))))
aufgerufen. Als letztes noch mit "touch" die fehlenden Dateien angelegt... (NEWS,COPYING, usw....)
Siehe oben.
Prima, scheint bis hier alles OK zu sein, ist es aber nicht ;(
Laut der Einleitung reicht nun einfach ein "./configure" um das Makefile zu generieren.
Stimmt tut's auch, aber das Makefile funktioniert nicht wirklich;(
So, das von mir probierte funktioniert also tadelos, wiedermal "USERERROR" (siehe unten);(
------------------- snip ------------------------------------ voodoo@yamato tmp $ make gcc -DPACKAGE=\"sigger\" -DVERSION=\"1.0\" -I. -I. -g -O2 -c main.c main.c: In Funktion »main«: main.c:13: error: `SIGINT' undeclared (first use in this function) main.c:13: error: (Each undeclared identifier is reported only once main.c:13: error: for each function it appears in.) main.c:13: error: `SIG_ERR' undeclared (first use in this function) main.c: In Funktion »strgc_faenger«: main.c:39: error: `SIGINT' undeclared (first use in this function) main.c:39: error: `SIG_IGN' undeclared (first use in this function) main.c:45: error: `SIG_ERR' undeclared (first use in this function) make: *** [main.o] Fehler 1
Hmm, "SIGINT" & Co. ist in signal.h deklariert, warum wird die nicht gefunden?
#include
vergessen?
Nein...
Hast Du eine Datei names signal.h in '.' herumliegen?
JAUUUUUUUUU, das ist das Problem. Bei meinen von Hand geschrieben Makefile gab's damit keine Probleme. Bei näherer Betrachtung hatte ich da wohl Glück, das gcc zuerst in den Systempfaden geguckt hat. Kann aber auch sein, das autoconf & Co. das unterbinden, may be? Kurz meine (leere!!) signal.h aus dem Verzeichnis gelöscht und alles funktioniert _prima_!!! Also in Zukunft nur noch mit autoconf & Co. Eigene Makefile's haben doch oft Lücken, z.B. bei "inline" in Header-Dateien. Bei c++ ist das doch des öfteren der Fall. Man muss darauf achten, das neu kompiliert wird, wenn sich ein solcher Header ändert. Bislang musste ich das alles von Hand in meine Makefile eintragen(Oft auch richtig tricksen). Auf den ersten Blick funktioniert das alles tadellos mit autoconf. Ich habe mal ein neues C-File mit Header eingebaut, man braucht _nichtmal_ die neue Datei irgendwo eintragen(SUFFIX-Regeln). Gut, das machen einige meiner selbst geschrieben Makefile auch, aber man muss sie eben selber schreiben. "touche" ich den Header, wird sofort das betroffene Modul neukompiliert. Jetzt, wo ich mich damit befasst habe bin ich etwas Weiser als vorher, weil - man muss weniger Tippen - autoconf funktioniert genauso einfach wie z.B. qmake/tmake - man hat bestimmt bessere Chancen, das das Programm von anderen benutzt wird, weil GNU... - mit autoconf hätte ich mich schon viel früher beschäftigen müssen :)) Gut das es _diese_ Mailinglisten gibt! *freu* Vielen Dank! Ciao Andre