• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

bind patchen und neu übersetzen

Hallo an alle,
ich möchte gerne den bind so patchen, das ich ldap zur Namensauflösung verwenden kann, nun habe ich damit aber ein kleines Problem bei dem entsprechenden patch ist ein gute INSTALL dabei, aber einen Teil verstehe ich nicht. Vielleicht könnt ihr mir helfen. Hier mal ein Ausschnitt aus dem INSTALL:
Copy ldapdb.c to bin/named and ldapdb.h to bin/named/include in the
source tree.
Das klappt ;-)) wir auch vom Compiler erkannt.
you need to edit bin/named/main.c. Below where it says
"#include "xxdb.h"", add the line "#include <ldapdb.h>". Below where
it says "xxdb_init();" add the line "ldapdb_init();", and finally
below where it says "xxdb_clear();", add "ldapdb_clear();".
Auch das habe ich gemacht siehe den Ausschnitt aus der main.c
Code:
      */
        /* xxdb_init(); */
        ldapdb_init();
Alle anderen Stellen habe ich genau so ergänzt. Jetzt kommt der Punkt den ich nicht verstehe:
Next alter bin/named/Makefile.in. Add ldapdb.@O@ to DBDRIVER_OBJS and
ldapdb.c to DBDRIVER_SRCS. You also need to add something like
-I/usr/local/include to DBDRIVER_INCLUDES and
-L/usr/local/lib -lldap -llber -lresolv to DBDRIVER_LIBS
depending on what LDAP library you have and where you installed it.
Also die ersten beide Einträge ldapdb@O@ und ldapdb.c habe ich gemacht, auch an der Richtigen Stelle, hoffe ich ;-)
Aber den letzten Teil mit den einträgen zu DBDRIVERS_INCLUDES und DBDRIVERS_LIBS den verstehe ich nicht :-(
Vielleicht kann mir ja von euch jemand helfen. Hier mal der komplette Makefile.in, schon mit den ersten Änderungen:
Code:
srcdir =        @srcdir@
VPATH =         @srcdir@
top_srcdir =    @top_srcdir@

@BIND9_VERSION@

@BIND9_MAKE_INCLUDES@

#
# Add database drivers here.
#
DBDRIVER_OBJS =
DBDRIVER_SRCS =
DBDRIVER_INCLUDES =
DBDRIVER_LIBS =

CINCLUDES =     -I${srcdir}/include -I${srcdir}/unix/include \
                ${LWRES_INCLUDES} ${DNS_INCLUDES} ${BIND9_INCLUDES} \
                ${ISCCFG_INCLUDES} ${ISCCC_INCLUDES} ${ISC_INCLUDES} \
                ${DBDRIVER_INCLUDES}

CDEFINES =
CWARNINGS =

DNSLIBS =       ../../lib/dns/libdns.@A@ @DNS_CRYPTO_LIBS@
ISCCFGLIBS =    ../../lib/isccfg/libisccfg.@A@
ISCCCLIBS =     ../../lib/isccc/libisccc.@A@
ISCLIBS =       ../../lib/isc/libisc.@A@
LWRESLIBS =     ../../lib/lwres/liblwres.@A@
BIND9LIBS =     ../../lib/bind9/libbind9.@A@

DNSDEPLIBS =    ../../lib/dns/libdns.@A@
ISCCFGDEPLIBS = ../../lib/isccfg/libisccfg.@A@
ISCCCDEPLIBS =  ../../lib/isccc/libisccc.@A@
ISCDEPLIBS =    ../../lib/isc/libisc.@A@
LWRESDEPLIBS =  ../../lib/lwres/liblwres.@A@
BIND9DEPLIBS =  ../../lib/bind9/libbind9.@A@

DEPLIBS =       ${LWRESDEPLIBS} ${DNSDEPLIBS} ${BIND9DEPLIBS} \
                ${ISCCFGDEPLIBS} ${ISCCCDEPLIBS} ${ISCDEPLIBS}

LIBS =          ${LWRESLIBS} ${DNSLIBS} ${BIND9LIBS} \
                ${ISCCFGLIBS} ${ISCCCLIBS} ${ISCLIBS} ${DBDRIVER_LIBS} @LIBS@

SUBDIRS =       unix

TARGETS =       named@EXEEXT@ lwresd@EXEEXT@

OBJS =          aclconf.@O@ builtin.@O@ client.@O@ config.@O@ control.@O@ \
                controlconf.@O@ interfacemgr.@O@ \
                listenlist.@O@ log.@O@ logconf.@O@ main.@O@ notify.@O@ \
                query.@O@ server.@O@ sortlist.@O@ \
                tkeyconf.@O@ tsigconf.@O@ update.@O@ xfrout.@O@ \
                zoneconf.@O@ \
                lwaddr.@O@ lwresd.@O@ lwdclient.@O@ lwderror.@O@ lwdgabn.@O@ \
                lwdgnba.@O@ lwdgrbn.@O@ lwdnoop.@O@ lwsearch.@O@ ldapdb.@O@\
                $(DBDRIVER_OBJS)

UOBJS =         unix/os.@O@

SRCS =          aclconf.c builtin.c client.c config.c control.c \
                controlconf.c interfacemgr.c \
                listenlist.c log.c logconf.c main.c notify.c \
                query.c server.c sortlist.c \
                tkeyconf.c tsigconf.c update.c xfrout.c \
                zoneconf.c \
                lwaddr.c lwresd.c lwdclient.c lwderror.c lwdgabn.c \
                lwdgnba.c lwdgrbn.c lwdnoop.c lwsearch.c ldapdb.c \
                $(DBDRIVER_SRCS)

MANPAGES =      named.8 lwresd.8 named.conf.5

HTMLPAGES =     named.html lwresd.html named.conf.html

MANOBJS =       ${MANPAGES} ${HTMLPAGES}

@BIND9_MAKE_RULES@

main.@O@: main.c
        ${LIBTOOL_MODE_COMPILE} ${CC} ${ALL_CFLAGS} \
                -DVERSION=\"${VERSION}\" \
                -DNS_LOCALSTATEDIR=\"${localstatedir}\" \
                -DNS_SYSCONFDIR=\"${sysconfdir}\" -c ${srcdir}/main.c

config.@O@: config.c
        ${LIBTOOL_MODE_COMPILE} ${CC} ${ALL_CFLAGS} \
                -DVERSION=\"${VERSION}\" \
                -DNS_LOCALSTATEDIR=\"${localstatedir}\" \
                -c ${srcdir}/config.c

named@EXEEXT@: ${OBJS} ${UOBJS} ${DEPLIBS}
        ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ \
        ${OBJS} ${UOBJS} ${LIBS}

lwresd@EXEEXT@: named@EXEEXT@
        rm -f lwresd@EXEEXT@
        @LN@ named@EXEEXT@ lwresd@EXEEXT@

doc man:: ${MANOBJS}

docclean manclean maintainer-clean::
        rm -f ${MANOBJS}

clean distclean maintainer-clean::
        rm -f ${TARGETS} ${OBJS}

installdirs:
        $(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${sbindir}
        $(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${mandir}/man5
        $(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${mandir}/man8

install:: named@EXEEXT@ lwresd@EXEEXT@ installdirs
        ${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} named@EXEEXT@ ${DESTDIR}${sbindir}
        (cd ${DESTDIR}${sbindir}; rm -f lwresd@EXEEXT@; @LN@ named@EXEEXT@ lwresd@EXEEXT@)
        ${INSTALL_DATA} ${srcdir}/named.8 ${DESTDIR}${mandir}/man8
        ${INSTALL_DATA} ${srcdir}/lwresd.8 ${DESTDIR}${mandir}/man8
        ${INSTALL_DATA} ${srcdir}/named.conf.5 ${DESTDIR}${mandir}/man5
Folgende Fehler (nur ein Auszug) kommen bei "make"
Code:
gcc -g -O2  -o named \
aclconf.o builtin.o client.o config.o control.o controlconf.o interfacemgr.o listenlist.o log.o logconf.o main.o notify.o query.o server.o sortlist.o tkeyconf.o tsigconf.o update.o xfrout.ozoneconf.o lwaddr.o lwresd.o lwdclient.o lwderror.o lwdgabn.o lwdgnba.o lwdgrbn.o lwdnoop.o lwsearch.o ldapdb.o  unix/os.o ../../lib/lwres/liblwres.a ../../lib/dns/libdns.a  -lcrypto  ../../lib/bind9/libbind9.a ../../lib/isccfg/libisccfg.a ../../lib/isccc/libisccc.a ../../lib/isc/libisc.a  -lnsl
ldapdb.o(.text+0x258): In function `ldapdb_getconn':
/root/bind-neu/bind-9.3.1/bin/named/ldapdb.c:138: undefined reference to `ldap_unbind'
ldapdb.o(.text+0x2c6): In function `ldapdb_bind':
/root/bind-neu/bind-9.3.1/bin/named/ldapdb.c:200: undefined reference to `ldap_open'
ldapdb.o(.text+0x2e5):/root/bind-neu/bind-9.3.1/bin/named/ldapdb.c:199: undefined reference to`ldap_unbind'
ldapdb.o(.text+0x2f7):/root/bind-neu/bind-9.3.1/bin/named/ldapdb.c:200: undefined reference to`ldap_open'
ldapdb.o(.text+0x30f):/root/bind-neu/bind-9.3.1/bin/named/ldapdb.c:205: undefined reference to`ldap_set_option'
Vielleicht kann mir da ja jemand von euch weiterhelfen.
Danke schon mal
Stefan
 
Code:
You also need to add something like
-I/usr/local/include to DBDRIVER_INCLUDES and
-L/usr/local/lib -lldap -llber -lresolv to DBDRIVER_LIBS
depending on what LDAP library you have and where you installed it.

dein linker vermisst die ldap Bibliotheken .....
die LIBS Zeile wäre ein guter Kandidat um das zu ergänzen ;)
oder DBDRIVER_LIBS="-L/usr/local/lib -lldap -llber -lresolv "
bzw mit -L/<pfad-zu-deinen-libs>
 
Hallo oc2pus,

genau das war's habe die beiden Zeilen
DBDRIVER_INCLUDES = -I /usr/include
DBDRIVER_LIBS = -L/usr/lib -lldap -llber -lresolv
so geändert und jetzt klappt es. Manchmal braucht man nur in die Richte Richtung geschubst zu werde.
Danke
Stefan
 
stka schrieb:
genau das war's habe die beiden Zeilen
DBDRIVER_INCLUDES = -I /usr/include
DBDRIVER_LIBS = -L/usr/lib -lldap -llber -lresolv

da /usr/include der default ist, bräuchtest du das gar nicht, deshalb wurde das Programm auch kompiliert :)

da /usr/lib der default ist, könntest du -L/usr/lib weglassen, die einzelnen Bibliotheken jedoch werden gebraucht ...
also kürzer:
DBDRIVER_LIBS = -lldap -llber -lresolv

aber das ist nur Kosmetik ;)
 
Zwar nur Kosmetik, aber jetzt weiß ich das für's nächste mal. Denn jetzt verstehe ich auch was da von mir gewollt wurde. Denn bis jetzt habe ich die Pfade in Makefiles.in noch nie geändert.

Danke

Stefan
 
Oben