Nagios/Icinga-Addon MK-Livestatus für Freetz - Build schlägt fehl

freddy4711

Neuer User
Mitglied seit
7 Jul 2007
Beiträge
155
Punkte für Reaktionen
0
Punkte
0
Hi...

ich bin gerade dabei, MK-Livestatus, ein Addon für Nagios/Icinga zu erstellen.

Leider schlägt der Build fehl.

Code:
mv -f .deps/livestatus_so-DoubleColumn.Tpo .deps/livestatus_so-DoubleColumn.Po
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/bin/mipsel-linux-uclibc-g++-uc -DHAVE_CONFIG_H -I. -I..    -I../nagios -fPIC -Os -pipe -march=4kc -Wa,--trap -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -MT livestatus_so-DowntimeOrComment.o -MD -MP -MF .deps/livestatus_so-DowntimeOrComment.Tpo -c -o livestatus_so-DowntimeOrComment.o `test -f 'DowntimeOrComment.cc' || echo './'`DowntimeOrComment.cc
In file included from ../nagios/config.h:151,
                 from ../nagios/objects.h:30,
                 from nagios.h:31,
                 from DowntimeOrComment.h:30,
                 from DowntimeOrComment.cc:25:
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/bin/../lib/gcc/mipsel-linux-uclibc/4.4.5/../../../../mipsel-linux-uclibc/include/strings.h: In function 'void bcopy(const void*, void*, size_t)':
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/bin/../lib/gcc/mipsel-linux-uclibc/4.4.5/../../../../mipsel-linux-uclibc/include/strings.h:65: error: 'memmove' was not declared in this scope
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/bin/../lib/gcc/mipsel-linux-uclibc/4.4.5/../../../../mipsel-linux-uclibc/include/strings.h: In function 'void bzero(void*, size_t)':
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/bin/../lib/gcc/mipsel-linux-uclibc/4.4.5/../../../../mipsel-linux-uclibc/include/strings.h:71: error: 'memset' was not declared in this scope
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/bin/../lib/gcc/mipsel-linux-uclibc/4.4.5/../../../../mipsel-linux-uclibc/include/strings.h: In function 'int bcmp(const void*, const void*, size_t)':
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/bin/../lib/gcc/mipsel-linux-uclibc/4.4.5/../../../../mipsel-linux-uclibc/include/strings.h:77: error: 'memcmp' was not declared in this scope
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/bin/../lib/gcc/mipsel-linux-uclibc/4.4.5/../../../../mipsel-linux-uclibc/include/strings.h: In function 'char* index(const char*, int)':
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/bin/../lib/gcc/mipsel-linux-uclibc/4.4.5/../../../../mipsel-linux-uclibc/include/strings.h:83: error: 'strchr' was not declared in this scope
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/bin/../lib/gcc/mipsel-linux-uclibc/4.4.5/../../../../mipsel-linux-uclibc/include/strings.h: In function 'char* rindex(const char*, int)':
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/bin/../lib/gcc/mipsel-linux-uclibc/4.4.5/../../../../mipsel-linux-uclibc/include/strings.h:89: error: 'strrchr' was not declared in this scope
mv -f .deps/livestatus_so-DoubleColumnFilter.Tpo .deps/livestatus_so-DoubleColumnFilter.Po
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/bin/mipsel-linux-uclibc-g++-uc -DHAVE_CONFIG_H -I. -I..    -I../nagios -fPIC -Os -pipe -march=4kc -Wa,--trap -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -MT livestatus_so-DownCommColumn.o -MD -MP -MF .deps/livestatus_so-DownCommColumn.Tpo -c -o livestatus_so-DownCommColumn.o `test -f 'DownCommColumn.cc' || echo './'`DownCommColumn.cc
make[3]: *** [livestatus_so-DowntimeOrComment.o] Fehler 1
make[3]: *** Warte auf noch nicht beendete Prozesse...
mv -f .deps/livestatus_so-DownCommColumn.Tpo .deps/livestatus_so-DownCommColumn.Po
make[3]: Verlasse Verzeichnis '/opt/freetz/trunk/source/target-mipsel_uClibc-0.9.29/mk-livestatus-1.1.8/src'
make[2]: *** [all-recursive] Fehler 1
make[2]: Verlasse Verzeichnis '/opt/freetz/trunk/source/target-mipsel_uClibc-0.9.29/mk-livestatus-1.1.8'
make[1]: *** [all] Fehler 2
make[1]: Verlasse Verzeichnis '/opt/freetz/trunk/source/target-mipsel_uClibc-0.9.29/mk-livestatus-1.1.8'
make: *** [source/target-mipsel_uClibc-0.9.29/mk-livestatus-1.1.8/src/livestatus.o] Fehler 2

Im Anhang findet ihr die config.log und das Makefile


Vielleicht kann mir jemand helfen.


Gruß Andreas
 

Anhänge

  • config.log.txt
    40.1 KB · Aufrufe: 0
  • mk-livestatus.mk.txt
    66 Bytes · Aufrufe: 1
Hi...

ich habe zum Test einmal in der Datei
Code:
toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/include/strings.h
ein
Code:
#include string.h
eingefügt. Damit läuft der Kompiliervorgang weiter.

Aber...es kann doch nicht sein, dass ich eine Datei der Standardbibliothek patchen muss?!? Gibt es da keine anderen Wege?


Gruß Andreas
 
Wirklich? Das hab ich ja noch nie gehört.

Kannst du mir da bitte einmal ein Beispiel-Paket nennen. Wie es da realisiert ist?
 
...
Kannst du mir da bitte einmal ein Beispiel-Paket nennen. Wie es da realisiert ist?
Na z. B. hier, wird die Standardbibliothek "errno.h" inkludiert.;)
Code:
--- common/dn_skipname.c.orig	1970-01-01 01:00:00.000000000 +0100
+++ common/dn_skipname.c	2009-01-07 15:37:54.000000000 +0100
@@ -0,0 +1,51 @@
+#include <[COLOR="Red"]errno.h[/COLOR]>
...
 
In deinem Beispiel wird eine Datei im Quelltext des Paketes gepatcht.

Ich muss ja bei mir eine Headerdatei der Standardbibliothek patchen. Das ist ja was anderes...
 
...
Ich muss ja bei mir eine Headerdatei der Standardbibliothek patchen. Das ist ja was anderes...
OK, das habe ich übersehen. Was steht in der Quelltextdatei, die "strings.h" und "string.h" braucht?
 
Da steht nichts auffälliges drin. Dort werden einige Headerdateien eingebunden.

Ich habe gerade eben zum Testen den Branch freetz-stable-1.1 heruntergeladen. Dort läuft läuft der Kompiliervorgang weiter. (Bis zu einem weiteren Fehler, welcher jedoch erst einmal nichts mit diesem zu tun hat)
 
Die Datei strings.h (im Gegensatz zu string.h) wird sowieso selten verwendet.
Du könntest auch versuchen, string.h statt strings.h aufzurufen.
 
Ok...ich habe die strings.h durch string.h ersetzt. Nun läuft der Kompiliervorgang weiter. Leider kommt ein weiterer Fehler:

Code:
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/bin/mipsel-linux-uclibc-g++-uc -DHAVE_CONFIG_H -I. -I..    -I../nagios -fPIC -Os -pipe -march=4kc -Wa,--trap -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -MT livestatus_so-Store.o -MD -MP -MF .deps/livestatus_so-Store.Tpo -c -o livestatus_so-Store.o `test -f 'Store.cc' || echo './'`Store.cc
In file included from /opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/usr/include/uClibc++/memory:24,
                 from /opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/usr/include/uClibc++/set:21,
                 from TableServices.h:30,
                 from Store.h:30,
                 from Store.cc:25:
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/usr/include/uClibc++/utility: In constructor 'std::pair<T1, T2>::pair(const T1&, const T2&) [with T1 = char [6], T2 = TableHosts*]':
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/usr/include/uClibc++/utility:80:   instantiated from 'std::pair<T1, T2> std::make_pair(const T1&, const T2&) [with T1 = char [6], T2 = TableHosts*]'
Store.cc:51:   instantiated from here
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/usr/include/uClibc++/utility:56: error: array used as initializer
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/usr/include/uClibc++/utility: In constructor 'std::pair<T1, T2>::pair(const T1&, const T2&) [with T1 = char [13], T2 = TableHosts*]':
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/usr/include/uClibc++/utility:80:   instantiated from 'std::pair<T1, T2> std::make_pair(const T1&, const T2&) [with T1 = char [13], T2 = TableHosts*]'
Store.cc:52:   instantiated from here
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/usr/include/uClibc++/utility:56: error: array used as initializer
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/usr/include/uClibc++/utility: In constructor 'std::pair<T1, T2>::pair(const T1&, const T2&) [with T1 = char [9], T2 = TableServices*]':
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/usr/include/uClibc++/utility:80:   instantiated from 'std::pair<T1, T2> std::make_pair(const T1&, const T2&) [with T1 = char [9], T2 = TableServices*]'
Store.cc:53:   instantiated from here
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/usr/include/uClibc++/utility:56: error: array used as initializer
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/usr/include/uClibc++/utility: In constructor 'std::pair<T1, T2>::pair(const T1&, const T2&) [with T1 = char [16], T2 = TableServices*]':
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/usr/include/uClibc++/utility:80:   instantiated from 'std::pair<T1, T2> std::make_pair(const T1&, const T2&) [with T1 = char [16], T2 = TableServices*]'
Store.cc:54:   instantiated from here
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/usr/include/uClibc++/utility:56: error: array used as initializer
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/usr/include/uClibc++/utility: In constructor 'std::pair<T1, T2>::pair(const T1&, const T2&) [with T1 = char [20], T2 = TableServices*]':
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/usr/include/uClibc++/utility:80:   instantiated from 'std::pair<T1, T2> std::make_pair(const T1&, const T2&) [with T1 = char [20], T2 = TableServices*]'
Store.cc:55:   instantiated from here
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/usr/include/uClibc++/utility:56: error: array used as initializer
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/usr/include/uClibc++/utility: In constructor 'std::pair<T1, T2>::pair(const T1&, const T2&) [with T1 = char [11], T2 = TableHostgroups*]':
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/usr/include/uClibc++/utility:80:   instantiated from 'std::pair<T1, T2> std::make_pair(const T1&, const T2&) [with T1 = char [11], T2 = TableHostgroups*]'
Store.cc:56:   instantiated from here
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/usr/include/uClibc++/utility:56: error: array used as initializer
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/usr/include/uClibc++/utility: In constructor 'std::pair<T1, T2>::pair(const T1&, const T2&) [with T1 = char [14], T2 = TableServicegroups*]':
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/usr/include/uClibc++/utility:80:   instantiated from 'std::pair<T1, T2> std::make_pair(const T1&, const T2&) [with T1 = char [14], T2 = TableServicegroups*]'
Store.cc:57:   instantiated from here
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/usr/include/uClibc++/utility:56: error: array used as initializer
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/usr/include/uClibc++/utility: In constructor 'std::pair<T1, T2>::pair(const T1&, const T2&) [with T1 = char [9], T2 = TableContacts*]':
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/usr/include/uClibc++/utility:80:   instantiated from 'std::pair<T1, T2> std::make_pair(const T1&, const T2&) [with T1 = char [9], T2 = TableContacts*]'
Store.cc:58:   instantiated from here
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/usr/include/uClibc++/utility:56: error: array used as initializer
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/usr/include/uClibc++/utility: In constructor 'std::pair<T1, T2>::pair(const T1&, const T2&) [with T1 = char [9], T2 = TableCommands*]':
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/usr/include/uClibc++/utility:80:   instantiated from 'std::pair<T1, T2> std::make_pair(const T1&, const T2&) [with T1 = char [9], T2 = TableCommands*]'
Store.cc:59:   instantiated from here
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/usr/include/uClibc++/utility:56: error: array used as initializer
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/usr/include/uClibc++/utility: In constructor 'std::pair<T1, T2>::pair(const T1&, const T2&) [with T1 = char [10], T2 = TableDownComm*]':
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/usr/include/uClibc++/utility:80:   instantiated from 'std::pair<T1, T2> std::make_pair(const T1&, const T2&) [with T1 = char [10], T2 = TableDownComm*]'
Store.cc:60:   instantiated from here
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/usr/include/uClibc++/utility:56: error: array used as initializer
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/usr/include/uClibc++/utility: In constructor 'std::pair<T1, T2>::pair(const T1&, const T2&) [with T1 = char [9], T2 = TableDownComm*]':
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/usr/include/uClibc++/utility:80:   instantiated from 'std::pair<T1, T2> std::make_pair(const T1&, const T2&) [with T1 = char [9], T2 = TableDownComm*]'
Store.cc:61:   instantiated from here
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/usr/include/uClibc++/utility:56: error: array used as initializer
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/usr/include/uClibc++/utility: In constructor 'std::pair<T1, T2>::pair(const T1&, const T2&) [with T1 = char [7], T2 = TableStatus*]':
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/usr/include/uClibc++/utility:80:   instantiated from 'std::pair<T1, T2> std::make_pair(const T1&, const T2&) [with T1 = char [7], T2 = TableStatus*]'
Store.cc:62:   instantiated from here
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/usr/include/uClibc++/utility:56: error: array used as initializer
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/usr/include/uClibc++/utility: In constructor 'std::pair<T1, T2>::pair(const T1&, const T2&) [with T1 = char [4], T2 = TableLog*]':
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/usr/include/uClibc++/utility:80:   instantiated from 'std::pair<T1, T2> std::make_pair(const T1&, const T2&) [with T1 = char [4], T2 = TableLog*]'
Store.cc:63:   instantiated from here
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/usr/include/uClibc++/utility:56: error: array used as initializer
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/usr/include/uClibc++/utility: In constructor 'std::pair<T1, T2>::pair(const T1&, const T2&) [with T1 = char [12], T2 = TableTimeperiods*]':
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/usr/include/uClibc++/utility:80:   instantiated from 'std::pair<T1, T2> std::make_pair(const T1&, const T2&) [with T1 = char [12], T2 = TableTimeperiods*]'
Store.cc:64:   instantiated from here
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/usr/include/uClibc++/utility:56: error: array used as initializer
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/usr/include/uClibc++/utility: In constructor 'std::pair<T1, T2>::pair(const T1&, const T2&) [with T1 = char [14], T2 = TableContactgroups*]':
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/usr/include/uClibc++/utility:80:   instantiated from 'std::pair<T1, T2> std::make_pair(const T1&, const T2&) [with T1 = char [14], T2 = TableContactgroups*]'
Store.cc:65:   instantiated from here
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/usr/include/uClibc++/utility:56: error: array used as initializer
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/usr/include/uClibc++/utility: In constructor 'std::pair<T1, T2>::pair(const T1&, const T2&) [with T1 = char [8], T2 = TableColumns*]':
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/usr/include/uClibc++/utility:80:   instantiated from 'std::pair<T1, T2> std::make_pair(const T1&, const T2&) [with T1 = char [8], T2 = TableColumns*]'
Store.cc:66:   instantiated from here
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/usr/include/uClibc++/utility:56: error: array used as initializer
make[3]: *** [livestatus_so-Store.o] Fehler 1
make[3]: *** Warte auf noch nicht beendete Prozesse...
mv -f .deps/livestatus_so-store.Tpo .deps/livestatus_so-store.Po
make[3]: Verlasse Verzeichnis '/opt/freetz/trunk/source/target-mipsel_uClibc-0.9.29/mk-livestatus-1.1.8/src'
make[2]: *** [all-recursive] Fehler 1
make[2]: Verlasse Verzeichnis '/opt/freetz/trunk/source/target-mipsel_uClibc-0.9.29/mk-livestatus-1.1.8'
make[1]: *** [all] Fehler 2
make[1]: Verlasse Verzeichnis '/opt/freetz/trunk/source/target-mipsel_uClibc-0.9.29/mk-livestatus-1.1.8'
make: *** [source/target-mipsel_uClibc-0.9.29/mk-livestatus-1.1.8/src/livestatus.o] Fehler 2
 
Guten Morgen...

ich habe gestern Nacht noch einen Versuch gestartet, und MK-Livestatus manuell kompiliert.

1. Sourcecode gepatcht - alle #include strings.h durch #include string.h ersetzt
2. Buildumgebung eingerichtet
Code:
export PATH=/opt/freetz/trunk/toolchain/target/bin:$PATH
3. Build gestartet
Code:
./configure --build=i386-linux-gnu --target=mipsel-linux --host=mipsel-linux && make

Der Kompiliervorgang läuft komplett ohne Fehler durch. Anschließend habe ich die beiden Dateien livestatus.o (Brokermodul für Nagios/Icinga) und unixcat auf die Fritzbox kopiert und das Modul in der icinga.cfg aktiviert.

Leider bekomme ich bei einem Restart von Icinga folgenden Fehler
Code:
Error: Could not load module '/var/tmp/icinga/bin/livestatus.o' -> File not found
obwohl die Datei physisch vorhanden ist:
Code:
/var/tmp/icinga/bin # ls -l
-rwxr-xr-x    1 icinga   icinga     522832 Dec 11 01:25 livestatus.o
/var/tmp/icinga/bin #

Anschließend habe ich mit ldd untersucht, ob irgendwelche Abhängigkeiten von Shared Libraries nicht erfüllt sind.
Code:
root@fritz-ka:/var/tmp/icinga/bin# ldd /var/tmp/icinga/bin/livestatus.o 
	libpthread.so.0 => not found (0x00000000)
	libstdc++.so.6 => not found (0x00000000)
	libm.so.0 => not found (0x00000000)
	libgcc_s.so.1 => not found (0x00000000)
	libc.so.0 => not found (0x00000000)
	not a dynamic executable

Ich habe das Verzeichnis /lib zum LD_LIBRARY_PATH hinzugefügt und bekomme nun folgende Ausgabe von ldd:
Code:
root@fritz-ka:/var/tmp/icinga/bin# ldd /var/tmp/icinga/bin/livestatus.o 
	libpthread.so.0 => /lib/libpthread.so.0 (0x00000000)
	libstdc++.so.6 => not found (0x00000000)
	libm.so.0 => /lib/libm.so.0 (0x00000000)
	libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00000000)
	libc.so.0 => /lib/libc.so.0 (0x00000000)
	/lib/ld-uClibc.so.0 => /lib/ld-uClibc.so.0 (0x00000000)

Die Abhängigkeit von libstdc++.so.6 habe ich insofern aufgelöst, dass ich die Datei libstdc++.so.6.0.13 aus der Freetz-Toolchain auf die Box kopiert habe und den Pfad dem LD_LIBRARY_PATH hinzugefügt habe.

Nun werden alle Abhängigkeiten erfüllt. Nur leider funktioniert das Modul nicht; mit gleicher Fehlermeldung wie oben "file not found"

1. Welche Möglichkeiten gibt es noch, um das zu debuggen? Kann mir jemand helfen?

2. Wieso läuft der Kompiliervorgang außerhalb der Freetz-Buildumgebung durch, während er als Freetz-Paket abbricht? Werden dabei andere Header-Dateien verwendet?

Anbei der Patch, welcher die #include strings.h durch #include string.h ersetzt.


Gruß Andreas
 

Anhänge

  • 001-strings_h.patch.txt
    1.1 KB · Aufrufe: 1
Zuletzt bearbeitet:
So wie es aussieht wird bei Dir mips-linux-uclibc-g++ als c++-Compiler verwendet. In freetz wird dagegen ein Wrapper-Script mips-linux-uclibc-g++-uc verwendet - welches uClibc++ statt libstdc++ als die Implementierung von Standard C++ Library verwendet. Um -uc zu verwenden, musst Du die Variable CXX beim make- ggf. schon beim configure-Aufruf überladen/setzen.

Das würde die Abhängigleit zu libstdc++ erklären, sollte aber nicht der Grund fürs "files not found" sein. Schon mal den Quellcode an der Stelle gelesen, wo die Fehlermeldung ausgegeben wird?

Wegen strings.h/string.h: würde mir das noch genauer anschauen wollen, aber so wie es aussieht, ist dieser Patch einfach fehlerhaft, wohingegen die beiden 0.9.30.3 u. 0.9.31 in Ordnung sind.
 
Ich bin mir nicht sicher, ob der Patch von AVM oder aus OpenWRT kommt oder ob er zusammen gesetzt ist. Und dann gibt es ja auch noch die uClibc Config Funktion für diese Macros...

Gruß
Oliver
 
OK...

ich habe nun einmal die die CXX-Flag wie folgt gesetzt
Code:
export CXX=/opt/freetz/trunk/toolchain/target/bin/mipsel-linux-g++-uc
und neu kompiliert (mit meinem Patch). Leider bricht nun der Vorgang ab:
Code:
/opt/freetz/trunk/toolchain/target/bin/mipsel-linux-g++-uc -DHAVE_CONFIG_H -I. -I..    -I../nagios -fPIC -g -O2 -MT livestatus_so-DoubleColumnFilter.o -MD -MP -MF .deps/livestatus_so-DoubleColumnFilter.Tpo -c -o livestatus_so-DoubleColumnFilter.o `test -f 'DoubleColumnFilter.cc' || echo './'`DoubleColumnFilter.cc
In file included from /opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/usr/include/uClibc++/memory:22,
                 from /opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/usr/include/uClibc++/char_traits:22,
                 from /opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/usr/include/uClibc++/string:21,
                 from DoubleColumnFilter.h:30,
                 from DoubleColumnFilter.cc:26:
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/usr/include/uClibc++/cstdlib:41: error: '::rpl_malloc' has not been declared
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/usr/include/uClibc++/cstdlib:44: error: '::rpl_realloc' has not been declared
In file included from /opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/usr/include/uClibc++/char_traits:22,
                 from /opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/usr/include/uClibc++/string:21,
                 from DoubleColumnFilter.h:30,
                 from DoubleColumnFilter.cc:26:
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/usr/include/uClibc++/memory: In function 'std::pair<T*, int> std::get_temporary_buffer(ptrdiff_t)':
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/usr/include/uClibc++/memory:105: error: there are no arguments to 'rpl_malloc' that depend on a template parameter, so a declaration of 'rpl_malloc' must be available
/opt/freetz/trunk/toolchain/build/mipsel_gcc-4.4.5_uClibc-0.9.29/mipsel-linux-uclibc/usr/include/uClibc++/memory:105: note: (if you use '-fpermissive', G++ will accept your code, but allowing the use of an undeclared name is deprecated)
make[2]: *** [livestatus_so-DoubleColumnFilter.o] Fehler 1
make[2]: Verlasse Verzeichnis '/opt/MK/mk-livestatus-1.1.8/src'
make[1]: *** [all-recursive] Fehler 1
make[1]: Verlasse Verzeichnis '/opt/MK/mk-livestatus-1.1.8'
make: *** [all] Fehler 2
 
schon mal nach der Fehlermeldung gegoogelt, der erste Treffer erklärt die Ursache, die Lösung wird in Deinem Fall aber wahrscheinlich eine andere sein...
 
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.