Mailinglist Archive: opensuse-programming-de (118 mails)
| < Previous | Next > |
Re: C-Bibliothek erstellen
- From: David Haller <lists@xxxxxxxxxx>
- Date: Sun, 14 Jul 2002 13:43:18 +0200
- Message-id: <20020714114318.GA4045@xxxxxxxxxxxxxxxxxx>
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"
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"
| < Previous | Next > |