[closed] Kompilierfehler mit neuerem Kompiler (gcc-4.7.x)

Kreuzuebersetzer, Diskussion über Änderungen im Tuxbox-CDK und Tuxbox-CVS
GetAway
Contributor
Beiträge: 1509
Registriert: Donnerstag 27. Dezember 2007, 12:59

[closed] Kompilierfehler mit neuerem Kompiler (gcc-4.7.x)

Beitrag von GetAway »

Es gibt immer noch Kompilierfehler, wenn ich ich versuche mal ein
2.6 Image durchbauen zu lassen. Ich fang mal mit dem ersten Fehler
an und hoffe auf Unterstützung der Buildsystem-Experten :)
Allen Versuchen voraus, geht ein "make distclean".

Code: Alles auswählen

make[4]: Betrete Verzeichnis '/home/getaway/tuxbox/tuxbox-cvs-2.6-font/cdk/nfs-utils-1.1.1/utils/exportfs'
powerpc-tuxbox-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I../../support/include  -I../../support/include -D_GNU_SOURCE -Wall -Wstrict-prototypes  -pipe -Wall -pipe -Os -flto -fuse-linker-plugin -MT exportfs.o -MD -MP -MF .deps/exportfs.Tpo -c -o exportfs.o exportfs.c
exportfs.c: In function 'validate_export':
exportfs.c:392:2: warning: implicit declaration of function 'stat' [-Wimplicit-function-declaration]
exportfs.c:397:2: warning: implicit declaration of function 'S_ISDIR' [-Wimplicit-function-declaration]
exportfs.c:397:2: warning: implicit declaration of function 'S_ISREG' [-Wimplicit-function-declaration]
mv -f .deps/exportfs.Tpo .deps/exportfs.Po
/bin/sh ../../libtool --tag=CC   --mode=link powerpc-tuxbox-linux-gnu-gcc -Wall -Wstrict-prototypes  -pipe -Wall -pipe -Os -flto -fuse-linker-plugin  -Wl,-O1 -flto -fuse-linker-plugin -o exportfs exportfs.o ../../support/export/libexport.a ../../support/nfs/libnfs.a ../../support/misc/libmisc.a   
libtool: link: powerpc-tuxbox-linux-gnu-gcc -Wall -Wstrict-prototypes -pipe -Wall -pipe -Os -flto -fuse-linker-plugin -Wl,-O1 -flto -fuse-linker-plugin -o exportfs exportfs.o  ../../support/export/libexport.a ../../support/nfs/libnfs.a ../../support/misc/libmisc.a
/tmp/ccuMVObg.ltrans0.ltrans.o: In function `validate_export.1389':
ccuMVObg.ltrans0.o:(.text+0x670): undefined reference to `S_ISDIR'
ccuMVObg.ltrans0.o:(.text+0x680): undefined reference to `S_ISREG'
collect2: error: ld returned 1 exit status
make[4]: *** [exportfs] Fehler 1
make[4]: Verlasse Verzeichnis '/home/getaway/tuxbox/tuxbox-cvs-2.6-font/cdk/nfs-utils-1.1.1/utils/exportfs'
make[3]: *** [all-recursive] Fehler 1
make[3]: Verlasse Verzeichnis '/home/getaway/tuxbox/tuxbox-cvs-2.6-font/cdk/nfs-utils-1.1.1/utils'
make[2]: *** [all-recursive] Fehler 1
make[1]: *** [/home/getaway/tuxbox/dbox2-2.6-font/cdkflash/root/sbin/rpc.nfsd] Fehler 2
make: *** [/home/getaway/tuxbox/dbox2-2.6-font/cdkflash/root] Fehler 2
make[2]: Verlasse Verzeichnis '/home/getaway/tuxbox/tuxbox-cvs-2.6-font/cdk/nfs-utils-1.1.1'
make[1]: Verlasse Verzeichnis '/home/getaway/tuxbox/tuxbox-cvs-2.6-font/cdk'
doc
Contributor
Beiträge: 1623
Registriert: Donnerstag 10. Januar 2002, 20:03

Re: Kompilierfehler mit neuerem Kompiler

Beitrag von doc »

Code: Alles auswählen

exportfs.c:392:2: warning: implicit declaration of function 'stat' [-Wimplicit-function-declaration]
exportfs.c:397:2: warning: implicit declaration of function 'S_ISDIR' [-Wimplicit-function-declaration]
exportfs.c:397:2: warning: implicit declaration of function 'S_ISREG' [-Wimplicit-function-declaration]

Code: Alles auswählen

/tmp/ccuMVObg.ltrans0.ltrans.o: In function `validate_export.1389':
ccuMVObg.ltrans0.o:(.text+0x670): undefined reference to `S_ISDIR'
ccuMVObg.ltrans0.o:(.text+0x680): undefined reference to `S_ISREG'
collect2: error: ld returned 1 exit status
Da wird wohl ein #include fehlen. Vermutlich musst Du <sys/stat.h> inkludieren. Das wird in neueren glibc's anders gehandelt.
Na schönen Dank Herr Schwanke!
Ein toller Sommer! :-(
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: Kompilierfehler mit neuerem Kompiler (gcc-4.7.2)

Beitrag von seife »

"man 2 stat" sagt dir, welche includes benötigt werden.
GetAway
Contributor
Beiträge: 1509
Registriert: Donnerstag 27. Dezember 2007, 12:59

Re: Kompilierfehler mit neuerem Kompiler (gcc-4.7.2)

Beitrag von GetAway »

Danke, den Patch dazu gibts hier:
http://www.tuxbox.org/forum/viewt ... 95#p386395
GetAway
Contributor
Beiträge: 1509
Registriert: Donnerstag 27. Dezember 2007, 12:59

Re: Kompilierfehler mit neuerem Kompiler (gcc-4.7.2)

Beitrag von GetAway »

Einen weiteren Fehler gibts beim bauen von xfsprogs.
Das scheint mir etwas komplizierter zu sein. Ich habe
in /copy/xfs_copy.c
#include <uuid/uuid.h> eingetragen
und bekomme weiterhin den gleichen Fehler. Tipps?

Code: Alles auswählen

powerpc-tuxbox-linux-gnu-gcc  -g -O2 -DDEBUG -DVERSION=\"2.9.4\" -DLOCALEDIR=\"/home/getaway/tuxbox/dbox2-2.6-font/cdkroot/share/locale\" -DPACKAGE=\"xfsprogs\" -I../include -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -funsigned-char -fno-strict-aliasing -Wall    -c -o xfs_copy.o xfs_copy.c
/home/getaway/tuxbox/dbox2-2.6-font/cdk/bin/libtool --mode=link powerpc-tuxbox-linux-gnu-gcc -o xfs_copy -Wl,-O1 -flto -fuse-linker-plugin -static  xfs_copy.o   ../libxfs/libxfs.la  -lpthread   
powerpc-tuxbox-linux-gnu-gcc -o xfs_copy -Wl,-O1 -flto -fuse-linker-plugin xfs_copy.o  ../libxfs/.libs/libxfs.a -lpthread
xfs_copy.o: In function `platform_uuid_generate':
/home/getaway/tuxbox/tuxbox-cvs-2.6-font/cdk/xfsprogs-2.9.4/copy/../include/xfs/linux.h:84: undefined reference to `uuid_generate'
xfs_copy.o: In function `platform_uuid_copy':
/home/getaway/tuxbox/tuxbox-cvs-2.6-font/cdk/xfsprogs-2.9.4/copy/../include/xfs/linux.h:94: undefined reference to `uuid_copy'
/home/getaway/tuxbox/tuxbox-cvs-2.6-font/cdk/xfsprogs-2.9.4/copy/../include/xfs/linux.h:94: undefined reference to `uuid_copy'
collect2: error: ld returned 1 exit status
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: Kompilierfehler mit neuerem Kompiler (gcc-4.7.2)

Beitrag von seife »

Das ist beim linken, nicht beim kompilieren.
GetAway
Contributor
Beiträge: 1509
Registriert: Donnerstag 27. Dezember 2007, 12:59

Re: Kompilierfehler mit neuerem Kompiler (gcc-4.7.2)

Beitrag von GetAway »

Danke, ich schaue es mir bei dir an. Wenn es nicht klappt, dann kannst du mir helfen.

Edit: Keine Ahnung wo es da genau hängt. Bitte mal ein Profi dran.
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: Kompilierfehler mit neuerem Kompiler (gcc-4.7.2)

Beitrag von seife »

Die lib die uuid_copy etc. implementiert hat (libuuid?) fehlt IMO auf der Kommandozeile.
GetAway
Contributor
Beiträge: 1509
Registriert: Donnerstag 27. Dezember 2007, 12:59

Re: Kompilierfehler mit neuerem Kompiler (gcc-4.7.2)

Beitrag von GetAway »

Nur weiß ich nicht wo ich da suchen muss, weil ich mich bisher mit diesem Thema
nicht beschäftigt habe. Reiserfsprogs läuft durch, der Abschnitt in ide-apps.mk ist
genauso aufgebaut wie der von xfsprogs. Also muss ich wohl woanders suchen.
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: Kompilierfehler mit neuerem Kompiler (gcc-4.7.2)

Beitrag von seife »

probiers doch mal mit aktuellen xfsprogs, die wurden ja evtl. inzwischen gefixt.
Wenn die dann zu gross sind, kannst du immer noch den diff anschauen wo da an den LDFLAGS (oder so) was geändert wurde.
GetAway
Contributor
Beiträge: 1509
Registriert: Donnerstag 27. Dezember 2007, 12:59

Re: Kompilierfehler mit neuerem Kompiler (gcc-4.7.2)

Beitrag von GetAway »

Die Linker Fehler bekomme ich nicht hin. Vielleicht findet sich jemand.

openntpd:

Code: Alles auswählen

powerpc-tuxbox-linux-gnu-ar: creating libopenbsd-compat.a
a - atomicio.o
a - bsd-arc4random.o
a - bsd-misc.o
a - bsd-poll.o
a - bsd-snprintf.o
a - bsd-getifaddrs.o
a - bsd-setresuid.o
a - bsd-setresgid.o
a - fake-rfc2553.o
a - asprintf.o
a - daemon.o
a - errx.o
a - inet_pton.o
a - strlcpy.o
a - verrx.o
a - port-qnx.o
powerpc-tuxbox-linux-gnu-ranlib libopenbsd-compat.a
make[2]: Verlasse Verzeichnis '/home/getaway/tuxbox/tuxbox-cvs-2.6-font/cdk/openntpd-3.9p1/openbsd-compat'
powerpc-tuxbox-linux-gnu-gcc -pipe -Os -flto -fuse-linker-plugin -Wall -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wshadow -Wpointer-arith -Wcast-qual -Wsign-compare -D_GNU_SOURCE -Wl,-O1 -flto -fuse-linker-plugin -o ntpd ntpd.o buffer.o log.o imsg.o ntp.o ntp_msg.o config.o server.o client.o util.o y.tab.o openbsd-compat/libopenbsd-compat.a 
/tmp/ccGOhKNO.ltrans0.ltrans.o: In function `main':
ccGOhKNO.ltrans0.o:(.text.startup+0xbd0): undefined reference to `setproctitle'
ccGOhKNO.ltrans0.o:(.text.startup+0xd58): undefined reference to `setproctitle'
ccGOhKNO.ltrans0.o:(.text.startup+0x1370): undefined reference to `arc4random'
ccGOhKNO.ltrans0.o:(.text.startup+0x137c): undefined reference to `arc4random'
/tmp/ccGOhKNO.ltrans1.ltrans.o: In function `scale_interval':
ccGOhKNO.ltrans1.o:(.text+0x1604): undefined reference to `arc4random'
/tmp/ccGOhKNO.ltrans1.ltrans.o: In function `error_interval':
ccGOhKNO.ltrans1.o:(.text+0x1650): undefined reference to `arc4random'
collect2: error: ld returned 1 exit status
make[1]: *** [ntpd] Fehler 1
doc
Contributor
Beiträge: 1623
Registriert: Donnerstag 10. Januar 2002, 20:03

Re: Kompilierfehler mit neuerem Kompiler (gcc-4.7.2)

Beitrag von doc »

Die Symbole kommen doch nicht alle aus dem NTP Paket? Wenn doch fehlt sicherlich irgendwo noch ein Include, sonst fehlt eine (oder mehrere) Libs die zum Linken benötigt wird. Oder configure Argumente anpassen.
Na schönen Dank Herr Schwanke!
Ein toller Sommer! :-(
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: Kompilierfehler mit neuerem Kompiler (gcc-4.7.2)

Beitrag von seife »

Wie ist denn das setup im CDK mit kernel 2.4/2.6?
Welcher GCC wird für den Kernel verwendet? Welcher für den Userspace?

Kernel 2.4 kann doch IIRC nicht mit gcc4 kompiliert werden, oder?

Evtl. wäre es -- zumindest für Kernel 2.6 -- weniger Aufwand, einfach einen Yocto / OE-Layer zu bauen anstatt hier weiter im CDK rumzuflicken.
GetAway
Contributor
Beiträge: 1509
Registriert: Donnerstag 27. Dezember 2007, 12:59

Re: Kompilierfehler mit neuerem Kompiler (gcc-4.7.2)

Beitrag von GetAway »

Momentan baut Kernel 2.4 mit 4.1.2, höher ist nicht möglich.

Kernel 2.6 baut mit 4.7.2, ebenfalls mit 4.7.3. Neutrino baut
auch durch, nur die Plugins bzw die Host Applikations machen
hier und da Probleme. Es sind nur ein paar. Openntpd, xfsprogs,
hddtemp. Das sind die, die ich selber benutze. Den Rest würde
nach und nach durchtesten.
Wenn du das im CDK mal fixen würdest?

Übrigens, habe ich mal xfsprogs 3.1.8 und 3.1.10 probiert.
Dann gibts aber einen anderen Fehler.
undefined reference to `nftw64'
Und wie groß sich xfsprogs in einer neueren Version aufbläht,
weiß ich natürlich auch noch nicht.
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: Kompilierfehler mit neuerem Kompiler (gcc-4.7.2)

Beitrag von seife »

Ich fasse das CDK hoffentlich nie mehr an :-)
Das ist so undurchsichtig mit den gefühlt 5 Mio. Optionen die ein- und ausgeschaltet werden können, da bekomme ich beim Anschauen der Makefiles immer einen Knoten im Hirn. Deswegen ja mein Vorschlag stattdessen einen Yocto/OE-Layer zu machen, das ist relativ schnell gemacht (gestern Nachmittag habe ich einen für die Tripledragon gemacht) und irgendwie übersichtlicher.
GetAway
Contributor
Beiträge: 1509
Registriert: Donnerstag 27. Dezember 2007, 12:59

Re: Kompilierfehler mit neuerem Kompiler (gcc-4.7.2)

Beitrag von GetAway »

Was kann denn Yocto/OE-Layer?
Ist es möglich damit ein fertiges Image zu bauen?
Yadd brauche ich natürlich auch. Wie läuft das customizing ab?

Ich werde dich bestimmt nicht aufhalten, das mal eben zu stricken.
Testen werde ich es auch gerne. Ob man/ich es gebrauchen kann,
wird man sehen. Ist eigentlich gcc-4.8.3 möglich, für ppc k2.6?
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: Kompilierfehler mit neuerem Kompiler (gcc-4.7.2)

Beitrag von seife »

Yocto ist eine professioneller gepflegte Variante von openembedded http://yoctoproject.org

Und ja, da fallen beliebige Images raus. Z.B. war der Aufwand um zusätzlich zum USB-image für die coolstream noch ein jffs2-Image zu erzeugen ein einfaches
IMAGE_FSTYPES += "sum.jffs2"
im Configfile.
Ok, für sehr exotische Maschinen wie die Tripledragon inzwischen (weil da brauche ich einen gcc-3.4 um die Kernelmodule zu bauen) oder auch die dbox2 mit ihrem speziellen Bootimageformat wären etwas kompliziertere recipes notwendig, aber verglichen mit dem Aufwand den man ins tuxbox-CDK stecken muss ist das langfristig vermutlich eher wenig Arbeit. Die BSP-rezepte erstellt man ja auch nur einmal und dann ist es das.

Yocto ist in sog. Layern organisiert, und so Sachen wie standard-Tools und libs werden u.a. von der Linux-Foundation maintained, selbst muss man sich nur um den BSP-Layer für die eigene Box und evlt. um einen Layer für die Applikationen kümmern.

Ich habe das so organisiert, dass die BSPs in meta-tripledragon, meta-coolstream und meta-raspberrypi liegen (raspi muss ich nicht selbst maintainen) und die Applikationen in meta-neutrino-mp. Zu finden unter http://github.com/seife

Ob man den doch nicht mehr taufrischen 2.6.22(?) für die dbox mit gcc 4.8 kompilieren kann weiss ich nicht, aber ich vermute schon, ich glaub gestern als ich mit dem TD-layer noch nicht fertig war, habe ich den 2.6.12 für die TD "aus Versehen" mit 4.8 gebaut und da gab es keine Probleme.
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: Kompilierfehler mit neuerem Kompiler (gcc-4.7.2)

Beitrag von seife »

nftw64 liegt ziemlich sicher an

Code: Alles auswählen

OPTION_EGLIBC_FTRAVERSE = n
in config/eglibc.config
libuuid sollte sich so fixen lassen:

Code: Alles auswählen

--- a/make/ide-apps.mk
+++ b/make/ide-apps.mk
@@ -81,6 +81,8 @@ $(flashprefix)/root/bin/mount: utillinux | $(flashprefix)/root
 if ENABLE_UCLIBC
 E2FSPROGSOPT=--disable-tls
 XFSPROGSOPT=ac_cv_header_aio_h=yes ac_cv_lib_rt_lio_listio=yes
+else
+XFSPROGSOPT = LDFLAGS=-luuid
 endif
 
 #e2fs2progs
Ausserdem ist es subobtimal, immer die allerneueste eglibc aus dem SVN zu holen, da sollte man sich lieber auf einen bekannt funktionierenden stand oder wenigstens auf einen Versions-Branch stützen.
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: Kompilierfehler mit neuerem Kompiler (gcc-4.7.2)

Beitrag von seife »

das nl_langinfo problem liegt wahrscheinlich an

Code: Alles auswählen

OPTION_EGLIBC_LOCALE_CODE = n
in config/eglibc.config.
In der eglibc ist einfach zuviel deaktiviert, so dass vieles nicht funktionieren kann. Das liegt nicht am neueren Compiler.
GetAway
Contributor
Beiträge: 1509
Registriert: Donnerstag 27. Dezember 2007, 12:59

Re: Kompilierfehler mit neuerem Kompiler (gcc-4.7.2)

Beitrag von GetAway »

@seife, danke, ich werde es mal mit dieser Option ausprobieren.
Wir brauchen dann eine default-config, die das Gröbste erstmal
abdeckt.
Wahrscheinlich weißt du am ehesten, was da optimal wäre.
Ich mache dann den Patch dazu.
GetAway
Contributor
Beiträge: 1509
Registriert: Donnerstag 27. Dezember 2007, 12:59

Re: Kompilierfehler mit neuerem Kompiler (gcc-4.7.2)

Beitrag von GetAway »

@seife

hddtemp baut mit...

Code: Alles auswählen

OPTION_EGLIBC_LOCALE_CODE = y
xfsprogs-2.9.4 baut mit...

Code: Alles auswählen

OPTION_EGLIBC_FTRAVERSE = y

Code: Alles auswählen

XFSPROGSOPT = LDFLAGS="-luuid -lrt"
:D

Patche gibts hier:
http://www.tuxbox-cvs.sourceforge.net/f ... 51&t=50355

Jetzt fehlt noch openntpd.
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: Kompilierfehler mit neuerem Kompiler (gcc-4.7.2)

Beitrag von seife »

Probiers halt mal ohne die hälfte der glibc rauszuwerfen. Evtl. reicht das ja schon.
GetAway
Contributor
Beiträge: 1509
Registriert: Donnerstag 27. Dezember 2007, 12:59

Re: Kompilierfehler mit neuerem Kompiler (gcc-4.7.2)

Beitrag von GetAway »

Fehlt immer noch etwas.

Code: Alles auswählen

checking for arc4random... yes
...
checking for setproctitle... yes

Code: Alles auswählen

make[1]: Betrete Verzeichnis '/home/getaway/tuxbox/tuxbox-cvs-2.6-font/cdk/openntpd-3.9p1'
powerpc-tuxbox-linux-gnu-gcc -pipe -Os -flto -fuse-linker-plugin -Wall -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wshadow -Wpointer-arith -Wcast-qual -Wsign-compare -D_GNU_SOURCE -Wl,-O1 -flto -fuse-linker-plugin -o ntpd ntpd.o buffer.o log.o imsg.o ntp.o ntp_msg.o config.o server.o client.o util.o y.tab.o openbsd-compat/libopenbsd-compat.a 
/tmp/ccyala4f.ltrans0.ltrans.o: In function `main':
ccyala4f.ltrans0.o:(.text.startup+0xbd0): undefined reference to `setproctitle'
ccyala4f.ltrans0.o:(.text.startup+0xd58): undefined reference to `setproctitle'
ccyala4f.ltrans0.o:(.text.startup+0x1370): undefined reference to `arc4random'
ccyala4f.ltrans0.o:(.text.startup+0x137c): undefined reference to `arc4random'
/tmp/ccyala4f.ltrans1.ltrans.o: In function `scale_interval':
ccyala4f.ltrans1.o:(.text+0x1604): undefined reference to `arc4random'
/tmp/ccyala4f.ltrans1.ltrans.o: In function `error_interval':
ccyala4f.ltrans1.o:(.text+0x1650): undefined reference to `arc4random'
collect2: error: ld returned 1 exit status
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: Kompilierfehler mit neuerem Kompiler (gcc-4.7.2)

Beitrag von seife »

der configure-test ist falsch. openntpd stinkt anscheinend :-)
Da wird nur geschaut ob was kompiliert werden kann, aber das kompilierte wird (klar, ist ja cross...) nicht ausgeführt. Und das wäre das, wo man sehen würde dass es nicht funktioniert.

Egal, man kann configure ja sagen, dass man das nicht hat. Siehe Patch.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
GetAway
Contributor
Beiträge: 1509
Registriert: Donnerstag 27. Dezember 2007, 12:59

Re: Kompilierfehler mit neuerem Kompiler (gcc-4.7.2)

Beitrag von GetAway »

@seife

Das openntpd mit deinem Patch baut, brauche ich wohl nicht erwähnen.
Das hätte ich so nicht lösen können. Also Danke dafür. :up: