- Mitglied seit
- 4 Mai 2008
- Beiträge
- 303
- Punkte für Reaktionen
- 4
- Punkte
- 18
Hallo,
zuallererst einmal Entschuldigung dafür, dass ich das im Freetz Modifikations Unterforum poste, da es sich bei dem CPE, für das ich ltrace bauen möchte, nicht um eine FRITZ!Box handelt. Da hier aber die tiefergehenden Probleme behandelt werden, das bauen auch für ein MIPS System erfolgen soll und die Experten hier sind, habe ich mich dazu erdreistet. Mein Problem besteht darin, dass die Datei "gelf.h" oder "libelf.h" für das "configure" nicht gefunden wird, hier die entsprechende Fehlermeldung beim Make des FW Images
Ich habe mich dann mal in die Problematik versucht einzulesen (google), bin auch auf einige Anhaltspunkte gestoßen und auch beim Durchsehen der Freetz Make-Files ist ersichtlich, dass die dort verwendete Version 0.5.3 auch auf ein Cross-Kompilat von "libelf" für das Zielsystem angewiesen ist. Dieses habe ich dann auch erfolgreich gebaut, mit folgender Make-Segment (BUILD_LIBELF ist auf "y" im Config File gesetzt)
Frage erstmal hierzu, wenn ich es richtig verstanden habe, dann müssen die Dateien, die hierbei entstehen (vor allem libelf.h/gelf.h) in den Ordner der Toolchain (dort dann .../usr/include), ist das korrekt? Daher habe ich als "prefix" auch "$(TOOLCHAIN)" statt dem normalen Installationspfad genutzt. Ist es sinnvoll "--enable-static" und/oder "--enable-shared" zu nutzen. Im Ticket 1058 wird beides in das Makefile geschrieben, ich bin da verwirrt. Mit der oben ersichtlichen Make Anweisung hat er meines Erachtens nach korrekt gebaut und wenn ich nun unter dem Toolchain Pfad gucke, sind (durch "--enable-compat") auch die entsprechenden Dateien im include-Ordner vorhanden
die beiden Datein im ../usr/include/ enthalten (korrekterweise) nur ein "#include <libelf/gelf.h>" bzw. "#include <libelf/libelf.h>" auf den entsprechenden Ordner. Mache ich das soweit, bis hierhin, erstmal korrekt oder ist das schon komplett falsch?
Wenn ich nun den Make-Prozess für den Bau des gesamten Images starte, tritt der oben genannte Fehler auf. Ich hätte jetzt erwartet, dass er, nachdem diese beiden Dateien im "Toolchain Ordner" zur Verfügung stehen, das "configure" sauber durchführt, und ggf. beim "compile" hängt, aber er bricht leider da schon ab. Sollte ich mit "EXTRA_CFLAGS" arbeiten (für das "configure" von ltrace) um den Ordner nochmal zu inkludieren?
Welche weiteren Informationen würden benötigt werden?
edgecrusher
zuallererst einmal Entschuldigung dafür, dass ich das im Freetz Modifikations Unterforum poste, da es sich bei dem CPE, für das ich ltrace bauen möchte, nicht um eine FRITZ!Box handelt. Da hier aber die tiefergehenden Probleme behandelt werden, das bauen auch für ein MIPS System erfolgen soll und die Experten hier sind, habe ich mich dazu erdreistet. Mein Problem besteht darin, dass die Datei "gelf.h" oder "libelf.h" für das "configure" nicht gefunden wird, hier die entsprechende Fehlermeldung beim Make des FW Images
checking for style of include used by make... GNU
checking dependency style of /opt/toolchains/uclibc-crosstools-gcc-4.4.2-1/usr/bin/mips-linux-uclibc-gcc... gcc3
checking whether to enable maintainer-specific portions of Makefiles... no
checking elf.h usability... yes
checking elf.h presence... yes
checking for elf.h... yes
checking gelf.h usability... no
checking gelf.h presence... no
checking for gelf.h... no
configure: error: *** libelf.h or gelf.h not found on your system
make[2]: *** [ltrace-0.7.3] Fehler 1
make[2]: Verlasse Verzeichnis '/home/freetz/HomeBox6641_router/userspace/gpl/apps'
make[1]: *** [gpl-apps] Fehler 2
make[1]: Verlasse Verzeichnis '/home/freetz/HomeBox6641_router/userspace'
make: *** [userspace] Fehler 2
Ich habe mich dann mal in die Problematik versucht einzulesen (google), bin auch auf einige Anhaltspunkte gestoßen und auch beim Durchsehen der Freetz Make-Files ist ersichtlich, dass die dort verwendete Version 0.5.3 auch auf ein Cross-Kompilat von "libelf" für das Zielsystem angewiesen ist. Dieses habe ich dann auch erfolgreich gebaut, mit folgender Make-Segment (BUILD_LIBELF ist auf "y" im Config File gesetzt)
ifneq ($(strip $(BUILD_LIBELF)),)
libelf-0.8.13:
(tar xkfz libelf-0.8.13 2> /dev/null || true)
cd libelf-0.8.13; ./configure --host=mips-linux-uclibc --target=mips-linux-uclibc --enable-compat --enable-static --prefix=$(TOOLCHAIN)
$(MAKE) -C libelf-0.8.13 install
else
libelf-0.8.13:
@echo "skipping libelf-0.8.13 (not configured)"
endif
Frage erstmal hierzu, wenn ich es richtig verstanden habe, dann müssen die Dateien, die hierbei entstehen (vor allem libelf.h/gelf.h) in den Ordner der Toolchain (dort dann .../usr/include), ist das korrekt? Daher habe ich als "prefix" auch "$(TOOLCHAIN)" statt dem normalen Installationspfad genutzt. Ist es sinnvoll "--enable-static" und/oder "--enable-shared" zu nutzen. Im Ticket 1058 wird beides in das Makefile geschrieben, ich bin da verwirrt. Mit der oben ersichtlichen Make Anweisung hat er meines Erachtens nach korrekt gebaut und wenn ich nun unter dem Toolchain Pfad gucke, sind (durch "--enable-compat") auch die entsprechenden Dateien im include-Ordner vorhanden
-rw-r--r-- 1 root root 25 Okt 15 08:28 /opt/toolchains/uclibc-crosstools-gcc-4.4.2-1/usr/include/gelf.h
-rw-r--r-- 1 root root 27 Okt 15 08:28 /opt/toolchains/uclibc-crosstools-gcc-4.4.2-1/usr/include/libelf.h
-rw-r--r-- 1 root root 24585 Okt 15 08:28 /opt/toolchains/uclibc-crosstools-gcc-4.4.2-1/usr/include/libelf/elf_repl.h
-rw-r--r-- 1 root root 5103 Okt 15 08:28 /opt/toolchains/uclibc-crosstools-gcc-4.4.2-1/usr/include/libelf/gelf.h
-rw-r--r-- 1 root root 9050 Okt 15 08:28 /opt/toolchains/uclibc-crosstools-gcc-4.4.2-1/usr/include/libelf/libelf.h
-rw-r--r-- 1 root root 1452 Okt 15 08:28 /opt/toolchains/uclibc-crosstools-gcc-4.4.2-1/usr/include/libelf/nlist.h
-rw-r--r-- 1 root root 3969 Okt 15 08:28 /opt/toolchains/uclibc-crosstools-gcc-4.4.2-1/usr/include/libelf/sys_elf.h
die beiden Datein im ../usr/include/ enthalten (korrekterweise) nur ein "#include <libelf/gelf.h>" bzw. "#include <libelf/libelf.h>" auf den entsprechenden Ordner. Mache ich das soweit, bis hierhin, erstmal korrekt oder ist das schon komplett falsch?
Wenn ich nun den Make-Prozess für den Bau des gesamten Images starte, tritt der oben genannte Fehler auf. Ich hätte jetzt erwartet, dass er, nachdem diese beiden Dateien im "Toolchain Ordner" zur Verfügung stehen, das "configure" sauber durchführt, und ggf. beim "compile" hängt, aber er bricht leider da schon ab. Sollte ich mit "EXTRA_CFLAGS" arbeiten (für das "configure" von ltrace) um den Ordner nochmal zu inkludieren?
Welche weiteren Informationen würden benötigt werden?
edgecrusher