Hallo, On Sun, 14 Jul 2002, Ralf Corsepius wrote:
Am Sam, 2002-07-13 um 22.57 schrieb David Haller:
Naja, dann eben etwas aufwendiger und unkomprimiert "inline"...
,----[ ~/src/libdemo/Makefile.am ] | lib_LTLIBRARIES = libdemo.la | | libdemo_la_SOURCES = demo.c | include_HEADERS = demo.h | | bin_PROGRAMS = demo_prog | | demo_prog_SOURCES = demo_prog.c | demo_prog_LDADD = -L./.libs -ldemo Falsch: Nie .libs verwenden. Ist ein internes Implementierungsdetail, und kann abhängig vom Build-OS seinen Namen ändern.
Richtig wäre: demo_prog_LDADD = ./libdemo.la
Ups. Das stimmt. Hatte ich uebersehen ;)
| | test check: | LD_LIBRARY_PATH="./.libs" ./demo_prog `---- Siehe oben, ausserdem überflüssig. Libtool kümmert sich darum.
Naja, normal baut man (normale) Programme ja nicht mit libtool... $ make CFLAGS="$CFLAGS -I../libdemo" \ LDFLAGS="$LDFLAGS -L../libdemo/test_installed/lib -ldemo" demo_prog cc -O2 -I../libdemo -L../libdemo/test_installed/lib -ldemo demo_prog.c -o demo_prog $ ldd ./demo_prog libdemo.so.0 => not found libc.so.6 => /lib/libc.so.6 (0x40026000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000) Hier liegt's schlicht daran, dass ld/ldd nix von dem test_installed weiss (und soll!). $ LD_LIBRARY_PATH="../libdemo/test_installed/lib" ldd ./demo_prog libdemo.so.0 => ../libdemo/test_installed/lib/libdemo.so.0 Es geht hier ja nur um's ausfueheren zur Demo, dass man gegen die lib linken kann ;)
,----[ ~/src/libdemo/autogen.sh ] | #!/bin/sh | INST_PREFIX="${PWD}/test_installed" | | touch AUTHORS COPYING ChangeLog INSTALL NEWS README Wozu?
Wozu bei sowas die "normalen" fetten COPYING und INSTALL? Und Fehlermeldungen will man auch nicht unbedingt.
automake -a sorgt für die automatisch generierten Dateien.
Eben. Und obige brauchte ich hier nu wirklich nicht.
Die, die nicht automatisch generiert werden sollten von Hand geschrieben werden oder durch geeignete AUTOMAKE_OPTIONS umgangen werden (z.B. AUTOMAKE_OPTIONS = foreign in Makefile.ams, oder AM_INIT_AUTOMAKE([foreign]) in configure.acs mit automake >= 1.6)
Ahso. Ich muss gestehen, das hab ich noch gar nicht gekannt, habe aber auch nicht danach gesucht, da ich's normalerweise ja fuer sinnvoll halte ;)
| AC_PROG_CC | AM_PROG_LIBTOOL Hier wäre ein AC_[ENABLE|DISABLE]_SHARED sinnvoll
Ack. Aber ich wollte ja keine Automake/-conf Einfuehrung geben ;)
BTW: Ab automake-1.6 AM_CPPFLAGS statt INCLUDES in Makefile.am verwenden (Wird auch von automake-1.6 schon unterstützt, INCLUDES ist ab automake-1.7 (Noch nicht veröffentlicht) "obsolete").
Ok. Auch fuer die restlichen Hinweise/Korrekturen vielen Dank :) Insgesamt "Quick & Dirty" eben :) Wie man schon an deinen Kommentaren zu den neueren auto-Tools sieht kommt man dann eben sehr schnell vom hundertsten ins tausendste und das will und kann ich nicht erklaeren, dazu bin ich selbst noch zu sehr Anfaenger ;) Wuerde mich freuen, wenn wir das Thema aber noch fortsetzen koennen, ich lerne da gerne mehr :) -dnh, oh, good Sigmonster! ObSCNR: "So liebe Mitlisties, ab morgen macht Onkel Ralf einen Kurs fuer autoconf/automake/libtool und Konsorten, bitte Material fuer Notizen mitbringen sowie genuegend Kaffee/Tee etc." PS: Kennst du "Recursive Make Considered Harmful" von Peter Miller? s. http://www.canb.auug.org.au/~millerp/ -- 1. Every good work of software starts by scratching a developer's personal itch. --- Eric S. Raymond, "The Cathedral and the Bazaar"