[Problem] ISC DHCP 4.3.3 kompilieren

gangsterhitman

Neuer User
Mitglied seit
6 Dez 2010
Beiträge
5
Punkte für Reaktionen
0
Punkte
1
Hallo,

ich bin gerade dabei ein Freetz für meine Fritz Box 7320 zu erstellen und möchte dort den ISC DHCP 4.3.3 benutzen allerdings kommt beim kompilieren immer ein Fehler. Ich habe den Auszug des Fehlers als Code eingefügt. Leider werde ich aus der Datei isc-dhcp.mk nicht ganz schlau daraus wo ich für eine Änderung ansetzen müsste. Den neuesten Bind9 konnte ich mit einer Änderung des Makefiles kompilieren. Für den ISC DHCP habe ich noch das Originale Makefile gelassen das in den Sourcen dabei war.

Code:
cmd() { PATH="/home/matthias/freetz-trunk/toolchain/build/mips_gcc-4.8.5_uClibc-0.9.33.2-nptl/mips-linux-uclibc/bin:/home/matthias/freetz-trunk/toolchain/build/mips_gcc-4.8.5/mips-unknown-linux-gnu/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" LD_RUN_PATH="/usr/lib/freetz" make -j2  "$@"  || { printf "\n\\033[33m%s\\033[m\n" "ERROR: Build failed.";  exit 1; } }; 	if [ -e source/.echo_item_start -a ! -e source/.echo_item_build ]; then echo -n "building... "; touch source/.echo_item_build; fi; cmd -C source/target-mips_gcc-4.8.5_uClibc-0.9.33.2-nptl/dhcp-4.3.3 libbind="" EXTRA_CFLAGS="-ffunction-sections -fdata-sections" EXTRA_LDFLAGS="-Wl,--gc-sections"building... make[1]: Entering directory '/home/matthias/freetz-trunk/source/target-mips_gcc-4.8.5_uClibc-0.9.33.2-nptl/dhcp-4.3.3'
Making all in includes
make[2]: Entering directory '/home/matthias/freetz-trunk/source/target-mips_gcc-4.8.5_uClibc-0.9.33.2-nptl/dhcp-4.3.3/includes'
make  all-am
make[3]: Entering directory '/home/matthias/freetz-trunk/source/target-mips_gcc-4.8.5_uClibc-0.9.33.2-nptl/dhcp-4.3.3/includes'
make[3]: Leaving directory '/home/matthias/freetz-trunk/source/target-mips_gcc-4.8.5_uClibc-0.9.33.2-nptl/dhcp-4.3.3/includes'
make[2]: Leaving directory '/home/matthias/freetz-trunk/source/target-mips_gcc-4.8.5_uClibc-0.9.33.2-nptl/dhcp-4.3.3/includes'
Making all in tests
make[2]: Entering directory '/home/matthias/freetz-trunk/source/target-mips_gcc-4.8.5_uClibc-0.9.33.2-nptl/dhcp-4.3.3/tests'
make[2]: Nothing to be done for 'all'.
make[2]: Leaving directory '/home/matthias/freetz-trunk/source/target-mips_gcc-4.8.5_uClibc-0.9.33.2-nptl/dhcp-4.3.3/tests'
Making all in common
make[2]: Entering directory '/home/matthias/freetz-trunk/source/target-mips_gcc-4.8.5_uClibc-0.9.33.2-nptl/dhcp-4.3.3/common'
Making all in .
make[3]: Entering directory '/home/matthias/freetz-trunk/source/target-mips_gcc-4.8.5_uClibc-0.9.33.2-nptl/dhcp-4.3.3/common'
/home/matthias/freetz-trunk/toolchain/build/mips_gcc-4.8.5_uClibc-0.9.33.2-nptl/mips-linux-uclibc/bin/mips-linux-uclibc-gcc -DHAVE_CONFIG_H -I. -I../includes  -I.. -DLOCALSTATEDIR='"/var"'   -march=24kc -mtune=24kc -msoft-float -Os -pipe -Wa,--trap -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64  -I/include -ffunction-sections -fdata-sections -MT alloc.o -MD -MP -MF .deps/alloc.Tpo -c -o alloc.o alloc.c
/home/matthias/freetz-trunk/toolchain/build/mips_gcc-4.8.5_uClibc-0.9.33.2-nptl/mips-linux-uclibc/bin/mips-linux-uclibc-gcc -DHAVE_CONFIG_H -I. -I../includes  -I.. -DLOCALSTATEDIR='"/var"'   -march=24kc -mtune=24kc -msoft-float -Os -pipe -Wa,--trap -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64  -I/include -ffunction-sections -fdata-sections -MT bpf.o -MD -MP -MF .deps/bpf.Tpo -c -o bpf.o bpf.c
In file included from ../includes/dhcpd.h:91:0,
                 from alloc.c:30:
../includes/omapip/isclib.h:51:24: fatal error: isc/buffer.h: No such file or directory
 #include <isc/buffer.h>
                        ^
compilation terminated.
In file included from ../includes/dhcpd.h:91:0,
                 from bpf.c:36:
../includes/omapip/isclib.h:51:24: fatal error: isc/buffer.h: No such file or directory
 #include <isc/buffer.h>
                        ^
compilation terminated.
Makefile:441: recipe for target 'alloc.o' failed
make[3]: *** [alloc.o] Error 1
make[3]: *** Warte auf noch nicht beendete Prozesse...
Makefile:441: recipe for target 'bpf.o' failed
make[3]: *** [bpf.o] Error 1
make[3]: Leaving directory '/home/matthias/freetz-trunk/source/target-mips_gcc-4.8.5_uClibc-0.9.33.2-nptl/dhcp-4.3.3/common'
Makefile:504: recipe for target 'all-recursive' failed
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory '/home/matthias/freetz-trunk/source/target-mips_gcc-4.8.5_uClibc-0.9.33.2-nptl/dhcp-4.3.3/common'
Makefile:419: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/home/matthias/freetz-trunk/source/target-mips_gcc-4.8.5_uClibc-0.9.33.2-nptl/dhcp-4.3.3'

Eventuell kann mir dort jemand helfen.

Danke.

Mit freundlichen Grüßen
 
Glaubst Du ernsthaft, mit den Angaben kann man Dir helfen? Was genau hast Du bisher gemacht? 4.3.3 ist ja nicht in Freetz enthalten. Wo ist der Patch des bisher gemachten? Hast Du bind aktualisiert, Dich dabei mit exportlib auseinander gesetzt?
 
Bisher habe ich noch gar nichts geändert da ich momentan keinen Ansatz habe was ich ändern müsste. Ich habe nur die Version angepasst damit die aktuellste ISC DHCP Version geladen wird. Das ist meine momentane isc-dhcp.mk
Code:
$(call PKG_INIT_BIN, 4.3.3)$(PKG)_SOURCE:=dhcp-$($(PKG)_VERSION).tar.gz
$(PKG)_SOURCE_MD5:=C5577B09C9017CDD319A11FF6364268E
$(PKG)_DIR:=$($(PKG)_SOURCE_DIR)/dhcp-$($(PKG)_VERSION)


$(PKG)_BINARY:=$($(PKG)_DIR)/server/dhcpd
$(PKG)_TARGET_BINARY:=$($(PKG)_DEST_DIR)/usr/sbin/isc-dhcpd


$(PKG)_DEPENDS_ON += bind


$(PKG)_MAKE_OPTIONS := -C $($(PKG)_DIR)


$(PKG)_AVOID_AUTORECONF:=y


ifeq ($($(PKG)_AVOID_AUTORECONF),y)
# do not process bind subdir while making dhcp
$(PKG)_CONFIGURE_PRE_CMDS += $(SED) -i -r -e '/^SUBDIRS[ \t]*=/ s,bind,,' Makefile.in;
# replace ../bind and ../../bind with $(libbind) in all Makefile.in's
$(PKG)_CONFIGURE_PRE_CMDS += $(SED) -i -r -e 's,(../)+bind/,$$$$(libbind)/,g' `find . -name Makefile.in`;
$(PKG)_MAKE_OPTIONS += libbind="$(BIND_EXPORT_LIB_DIR)"
else
# this branch requires 010-external_libbind_support.patch
$(PKG)_CONFIGURE_PRE_CMDS += autoreconf -f -i;
endif


$(PKG)_CONFIGURE_PRE_CMDS += $(call PKG_PREVENT_RPATH_HARDCODING,./configure)


$(PKG)_CONFIGURE_OPTIONS += --with-libbind="$(BIND_EXPORT_LIB_DIR)"


# add EXTRA_CFLAGS, EXTRA_LDFLAGS variables to all Makefile.in's
$(PKG)_CONFIGURE_PRE_CMDS += $(SED) -i -r -e 's,^((C|LD)FLAGS)[ \t]*=[ \t]*@\1@,& $$$$(EXTRA_\1),' `find . -name Makefile.in`;


# reduce binary size by setting appropriate CFLAGS/LDFLAGS
$(PKG)_MAKE_OPTIONS += EXTRA_CFLAGS="-ffunction-sections -fdata-sections"
$(PKG)_MAKE_OPTIONS += EXTRA_LDFLAGS="-Wl,--gc-sections"


$(PKG)_CONFIGURE_ENV += ac_cv_file__dev_random=yes


$(PKG_SOURCE_DOWNLOAD)
$(PKG_UNPACKED)
$(PKG_CONFIGURED_CONFIGURE)


$($(PKG)_BINARY): $($(PKG)_DIR)/.configured
    $(SUBMAKE) $(ISC_DHCP_MAKE_OPTIONS)


$($(PKG)_TARGET_BINARY): $($(PKG)_BINARY)
    $(INSTALL_BINARY_STRIP)


$(pkg):


$(pkg)-precompiled: $($(PKG)_TARGET_BINARY)


$(pkg)-clean:
    -$(SUBMAKE) $(ISC_DHCP_MAKE_OPTIONS) clean


$(pkg)-uninstall:
    $(RM) $(ISC_DHCP_TARGET_BINARY)


$(PKG_FINISH)

Bind habe ich mit diesen Einstellungen kompiliert.

Code:
$(call PKG_INIT_BIN, 9.10.3-P2)
$(PKG)_SOURCE:=$(pkg)-$($(PKG)_VERSION).tar.gz
$(PKG)_SOURCE_MD5:=672DD3C2796B12AC8440F55BCAECFA82
$(PKG)_SITE:=http://ftp.isc.org/isc/bind9/$($(PKG)_VERSION)


$(PKG)_STARTLEVEL=40 # multid-wrapper may start it earlier!


define $(PKG)_DEFS
$(PKG)_BINARIES_ALL_$(1)            := $(2)
$(PKG)_BINARIES_$(1)                := $$(call PKG_SELECTED_SUBOPTIONS,$$($(PKG)_BINARIES_ALL_$(1)))
$(PKG)_BINARIES_BUILD_DIR_$(1)      := $$(addprefix $$($(PKG)_DIR)/bin/, $$(join $$(addsuffix /,$$($(PKG)_BINARIES_$(1))),$$($(PKG)_BINARIES_$(1))))
$(PKG)_BINARIES_ALL_TARGET_DIR_$(1) := $$($(PKG)_BINARIES_ALL_$(1):%=$$($(PKG)_DEST_DIR)/usr/$(1)/%)
$(PKG)_BINARIES_TARGET_DIR_$(1)     := $$($(PKG)_BINARIES_$(1):%=$$($(PKG)_DEST_DIR)/usr/$(1)/%)
$(PKG)_EXCLUDED                     += $$(filter-out $$($(PKG)_BINARIES_TARGET_DIR_$(1)),$$($(PKG)_BINARIES_ALL_TARGET_DIR_$(1)))
endef


$(eval $(call $(PKG)_DEFS,sbin,named rndc))
$(eval $(call $(PKG)_DEFS,bin,nsupdate dig))


$(PKG)_EXCLUDED+=$(if $(FREETZ_PACKAGE_BIND_NAMED),,usr/lib/bind usr/lib/cgi-bin/bind.cgi etc/default.bind etc/init.d/rc.bind)


$(PKG)_CONFIGURE_OPTIONS += BUILD_CC="$(HOSTCC)"
$(PKG)_CONFIGURE_OPTIONS += --disable-shared
$(PKG)_CONFIGURE_OPTIONS += --enable-static
$(PKG)_CONFIGURE_OPTIONS += --enable-epoll=no
$(PKG)_CONFIGURE_OPTIONS += --with-randomdev="/dev/urandom"
$(PKG)_CONFIGURE_OPTIONS += --with-libtool
$(PKG)_CONFIGURE_OPTIONS += --without-openssl
$(PKG)_CONFIGURE_OPTIONS += --without-gssapi
$(PKG)_CONFIGURE_OPTIONS += --disable-isc-spnego
$(PKG)_CONFIGURE_OPTIONS += --without-pkcs11
$(PKG)_CONFIGURE_OPTIONS += --without-idnlib
$(PKG)_CONFIGURE_OPTIONS += --without-purify
$(PKG)_CONFIGURE_OPTIONS += --without-libxml2
$(PKG)_CONFIGURE_OPTIONS += --disable-threads
$(PKG)_CONFIGURE_OPTIONS += --disable-backtrace
$(PKG)_CONFIGURE_OPTIONS += --disable-symtable
$(PKG)_CONFIGURE_OPTIONS += $(if $(FREETZ_TARGET_IPV6_SUPPORT),--enable-ipv6,--disable-ipv6)


$(PKG)_REBUILD_SUBOPTS += FREETZ_TARGET_IPV6_SUPPORT


$(PKG)_MAKE_FLAGS += EXTRA_CFLAGS="-ffunction-sections -fdata-sections" EXTRA_BINARY_LDFLAGS="-Wl,--gc-sections"


#$(PKG)_EXPORT_LIB_DIR := $(FREETZ_BASE_DIR)/$(BIND_DIR)/_exportlib
$(PKG)_CONFIGURE_OPTIONS += --enable-exportlib
$(PKG)_CONFIGURE_OPTIONS += --with-export-includedir="$($(PKG)_EXPORT_LIB_DIR)/include"
$(PKG)_CONFIGURE_OPTIONS += --with-export-libdir="$($(PKG)_EXPORT_LIB_DIR)/lib"


$(PKG_SOURCE_DOWNLOAD)
$(PKG_UNPACKED)
$(PKG_CONFIGURED_CONFIGURE)


$($(PKG)_DIR)/.compiled: $($(PKG)_DIR)/.configured
    $(SUBMAKE1) -C $(BIND_DIR) $(BIND_MAKE_FLAGS)
    @touch $@


$($(PKG)_EXPORT_LIB_DIR)/.installed: $($(PKG)_DIR)/.compiled
    $(SUBMAKE1) -C $(BIND_DIR)/lib $(BIND_MAKE_FLAGS) install
    @touch $@


$($(PKG)_BINARIES_BUILD_DIR_sbin) $($(PKG)_BINARIES_BUILD_DIR_bin): $($(PKG)_DIR)/.compiled
    @touch -c $@


$(foreach binary,$($(PKG)_BINARIES_BUILD_DIR_sbin),$(eval $(call INSTALL_BINARY_STRIP_RULE,$(binary),/usr/sbin)))
$(foreach binary,$($(PKG)_BINARIES_BUILD_DIR_bin),$(eval $(call INSTALL_BINARY_STRIP_RULE,$(binary),/usr/bin)))


$(pkg):


$(pkg)-precompiled: $($(PKG)_BINARIES_TARGET_DIR_sbin) $($(PKG)_BINARIES_TARGET_DIR_bin) $($(PKG)_EXPORT_LIB_DIR)/.installed


$(pkg)-clean:
    -$(SUBMAKE) -C $(BIND_DIR) clean
    $(RM) -r $(BIND_DIR)/.configured $(BIND_DIR)/.compiled $(BIND_EXPORT_LIB_DIR)/.installed $(BIND_EXPORT_LIB_DIR)


$(pkg)-uninstall:
    $(RM) $(BIND_BINARIES_ALL_TARGET_DIR_sbin) $(BIND_BINARIES_ALL_TARGET_DIR_bin)


$(PKG_FINISH)

Was für Angaben benötigst Du sonst noch?
 
S. r13586

Du hast Dich in keinster Weise mit BIND-Libraries auseinander gesetzt. ISC DHCP unterstützt immer noch nicht externe BIND-Libraries (obwohl ich vor etwa 2 Jahren einen Patch an die Entwickler geschickt habe). Es wird immer noch die im Unterverzeichnis bind mitgelieferte BIND-Version verwendet. Die Parameter, mit denen die mitgelieferte Version gebaut wird, sind hartkodiert und lassen sich von außen nicht ändern. Das führt dazu, dass sich ISC DHCP gar nicht cross-compilieren lässt. Mein Patch fügt den Support für externe BIND-Libraries hinzu. Es gab früher noch eine andere Lösung (diese wurde per default verwendet), die kein autoreconf bedarf. Da sich der Aufbau von Makefiles von ISC DHCP etwas geändert hat, hat diese nicht mehr funktioniert - daher kam auch der von Dir gemeldete Build-Fehler. Früher hat es gereicht nur den Pfad zu den Libs anzugeben, jetzt muss man auch noch den Pfad zu den Includes angeben.

Edit: Und bitte auf der Box testen und hier berichten... Wobei ich ehrlich gesagt nicht verstehe, wozu man solche Monster auf der Box braucht.
 
Zuletzt bearbeitet:
Habe Freetz jetzt kompiliert und Bind und der ISC DHCP starten auf der Fritz Box. Den Patch hätte ich nie so hinbekommen. Danke dafür. Ich habe es dann auch noch versucht aber bestimmte Header Dateien wurden nie gefunden auch wenn der Pfad mit --with-libbind angegeben wurde. Für OpenWRT hatte ich es geschafft den ISC DHCP Server 4.3.2 zu kompilieren aber dort wurde der mitgelieferte BIND benutzt. Jetzt fehlt nur noch ein Init Script für den DHCP Server und eine Config.
 

Zurzeit aktive Besucher

Statistik des Forums

Themen
244,868
Beiträge
2,219,770
Mitglieder
371,584
Neuestes Mitglied
porcupine
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.