dropbear lässt sich nicht kompilieren:

Kreuzuebersetzer, Diskussion über Änderungen im Tuxbox-CDK und Tuxbox-CVS
Kermit21
Interessierter
Interessierter
Beiträge: 98
Registriert: Mittwoch 12. März 2003, 12:40
Image: Kabel - diverse

dropbear lässt sich nicht kompilieren:

Beitrag von Kermit21 »

Hallo,
da mir scheinbar niemand ein binary anbieten kann, habe ich am Wochenende selber nach Anleitung versucht zu kompilieren. Bin aber gescheitert:

Hier meine Vorgehensweise:

Code: Alles auswählen

mkdir $HOME/tuxbox-cvs
mkdir $HOME/dbox2
cd $HOME/tuxbox-cvs
set CVS_RSH=ssh && cvs -d anoncvs@cvs.tuxbox.org:/cvs/tuxbox -z3 co -P .
cd $HOME/tuxbox-cvs/cdk
. /autogen.sh
./configure –prefix=$HOME/dbox2 –with-cvsdir=$HOME/tuxbox-cvs --enable-maintainer-mode –with-targetruleset=flash
make download (musste einiges selber nachladen, da die Quellen nicht stimmten)
make flash-squashfsneutrinoimages
Nach einigen Stunden kompilieren, scheiterte er hier:

Code: Alles auswählen

I: Using ld.so.1 as dynamic linker.
I: library reduction pass 1
1100 symbols, 1086 unresolved
I: library reduction pass 2
1274 symbols, 260 unresolved
I: library reduction pass 3
1277 symbols, 211 unresolved
I: library reduction pass 4
1277 symbols, 211 unresolved
powerpc-tuxbox-linux-gnu-strip --remove-section=.comment --remove-section=.note \
                `find /home/dboxcdk/dbox2/cdkflash/root/bin/ -path "*bin/?*"` \
                `find /home/dboxcdk/dbox2/cdkflash/root/sbin/ -path "*sbin/?*"` 2>/dev/null || /bin/true
powerpc-tuxbox-linux-gnu-strip --remove-section=.comment --remove-section=.note --strip-unneeded \
                `find /home/dboxcdk/dbox2/cdkflash/root/lib/tuxbox -name "*.so"` 2>/dev/null || /bin/true
powerpc-tuxbox-linux-gnu-strip /home/dboxcdk/dbox2/cdkflash/root/lib/* 2>/dev/null || /bin/true
chmod u+rwX,go+rX -R /home/dboxcdk/dbox2/cdkflash/root/
if [ -e /home/dboxcdk/dbox2/cdkflash/root/lib/libfx2.so ]; then \
        if [ -e /home/dboxcdk/dbox2/cdkflash/root/lib/tuxbox/plugins/ ]; then \
        rm -f /home/dboxcdk/dbox2/cdkflash/root/lib/tuxbox/plugins/libfx2.so ; \
        ln -s /lib/libfx2.so /home/dboxcdk/dbox2/cdkflash/root/lib/tuxbox/plugins/libfx2.so ; \
        fi ; \
        fi
if [ -e /home/dboxcdk/dbox2/cdkflash/root/bin/lufsd ]; then \
        cp -pa /home/dboxcdk/dbox2/cdkroot/lib/liblufs-ftpfs* /home/dboxcdk/dbox2/cdkflash/root/lib ; \
        if [ -e /home/dboxcdk/dbox2/cdkflash/root/lib/liblufs-ftpfs.2.0.0 ]; then \
        rm -f /home/dboxcdk/dbox2/cdkflash/root/lib/liblufs-ftpfs ; \
        rm -f /home/dboxcdk/dbox2/cdkflash/root/lib/liblufs-ftpfs.2 ; \
        mv /home/dboxcdk/dbox2/cdkflash/root/lib/liblufs-ftpfs.2.0.0 /home/dboxcdk/dbox2/cdkflash/root/lib/liblufs-ftpfs.so.2.0.0 ; \
        ln -s liblufs-ftpfs.so.2.0.0 /home/dboxcdk/dbox2/cdkflash/root/lib/liblufs-ftpfs.so.2 ; \
        ln -s liblufs-ftpfs.so.2.0.0 /home/dboxcdk/dbox2/cdkflash/root/lib/liblufs-ftpfs.so ; \
        fi ; \
        if [ -e /home/dboxcdk/dbox2/cdkflash/root/lib/liblufs-ftpfs.la ]; then \
        rm -f /home/dboxcdk/dbox2/cdkflash/root/lib/liblufs-ftpfs.la ; \
        fi ; \
        fi
make /home/dboxcdk/dbox2/cdkflash/.cramfs
make[2]: Entering directory `/home/dboxcdk/tuxbox-cvs/cdk'
make[2]: »/home/dboxcdk/dbox2/cdkflash/.cramfs« ist bereits aktualisiert.
make[2]: Leaving directory `/home/dboxcdk/tuxbox-cvs/cdk'
/usr/bin/fakeroot /home/dboxcdk/dbox2/cdk/bin/mksquashfs /home/dboxcdk/dbox2/cdkflash/cramfs/ /home/dboxcdk/dbox2/cdkflash/root-squashfs.img -be
/usr/bin/fakeroot: line 150: /home/dboxcdk/dbox2/cdk/bin/mksquashfs: Datei oder Verzeichnis nicht gefunden
make[1]: *** [flash-squashfsroot] Fehler 127
make[1]: Leaving directory `/home/dboxcdk/tuxbox-cvs/cdk'
make: *** [/home/dboxcdk/dbox2/cdkflash/root-squashfs-neutrino.img] Fehler 2

Ich vermute, dass es ein Problem mit fakeroot ist? Ist ja auch nicht so wichtig, will ja eigentlich kein ganzes flash, sondern nur dropbear. Also habe ich mal 'make all' gemacht, was nach einigen Stunden auch alles erfolgreich ohne Fehler durchgelaufen ist. Leider hat er dropbear nicht automatisch mitkompiliert bei 'make all' :(

Probiere ich 'make dropbear' oder 'make flash-dropbear', so scheiterte er bei configure:

Code: Alles auswählen

.-(~/tuxbox-cvs/cdk)-----------------------------------(dboxcdk@p3-1k2)-
`--> make dropbear
( rm -rf dropbear-0.48.1 || /bin/true ) && gunzip -cd Archive/dropbear-0.48.1.tar.gz | TAPE=- tar -x
cd dropbear-0.48.1 && \
                AR=powerpc-tuxbox-linux-gnu-ar AS=powerpc-tuxbox-linux-gnu-as CC=powerpc-tuxbox-linux-gnu-gcc CXX=powerpc-tuxbox-linux-gnu-g++ NM=powerpc-tuxbox-linux-gnu-nm RANLIB=powerpc-tuxbox-linux-gnu-ranlib CFLAGS="-mcpu=823 -mmultiple -mstring -meabi -pipe -Os" CXXFLAGS="-mcpu=823 -mmultiple -mstring -meabi -pipe -Os" LDFLAGS="-s" PKG_CONFIG_PATH=/home/dboxcdk/dbox2/cdkroot/lib/pkgconfig \
                autoconf && \
                ./configure \
                        --build=i686-pc-linux-gnu \
                        --host=powerpc-tuxbox-linux-gnu \
                        --prefix= \
                        --disable-syslog \
                        --disable-shadow \
                        --disable-lastlog \
                        --disable-utmp \
                        --disable-utmpx \
                        --disable-wtmp \
                        --disable-wtmpx && \
                cp ../Patches/dropbear-options.h options.h && \
                make PROGRAMS="dropbear dropbearkey scp" MULTI=1 && \
                mkdir -p /home/dboxcdk/dbox2/cdkroot/var/etc/dropbear && \
                mkdir -p /home/dboxcdk/dbox2/cdkroot/var/.ssh && \
                /usr/bin/install -c -m755 dropbearmulti /home/dboxcdk/dbox2/cdkroot/sbin && ln -sf dropbearmulti /home/dboxcdk/dbox2/cdkroot/sbin/dropbear && ln -sf dropbearmulti /home/dboxcdk/dbox2/cdkroot/sbin/dropbearkey && ln -sf dropbearmulti /home/dboxcdk/dbox2/cdkroot/sbin/scp && ln -sf /var/.ssh /home/dboxcdk/dbox2/cdkroot/.ssh && ln -sf /var/etc/dropbear /home/dboxcdk/dbox2/cdkroot/etc/dropbear && \
                powerpc-tuxbox-linux-gnu-strip --strip-all /home/dboxcdk/dbox2/cdkroot/sbin/dropbearmulti
checking for powerpc-tuxbox-linux-gnu-gcc... powerpc-tuxbox-linux-gnu-gcc
checking for C compiler default output file name...
configure: error: C compiler cannot create executables
See `config.log' for more details.
make: *** [.deps/dropbear] Fehler 77
Ich bin ratlos und mit meinem Latein am Ende. Wieso läuft make all und hier scheiterte er mit 'C compiler cannot create executables'?

Hat jemand vielleicht einen Tipp?

Danke,
Kermit
noro
Interessierter
Interessierter
Beiträge: 20
Registriert: Samstag 17. Juni 2006, 16:27

Re: dropbear lässt sich nicht kompilieren:

Beitrag von noro »

Hallo was für ein Target ist das und was für ein Linux hast du?
make download (musste einiges selber nachladen, da die Quellen nicht stimmten)
doc
Contributor
Beiträge: 1623
Registriert: Donnerstag 10. Januar 2002, 20:03

Beitrag von doc »

usr/bin/fakeroot /home/dboxcdk/dbox2/cdk/bin/mksquashfs /home/dboxcdk/dbox2/cdkflash/cramfs/ /home/dboxcdk/dbox2/cdkflash/root-squashfs.img -be /usr/bin/fakeroot: line 150: /home/dboxcdk/dbox2/cdk/bin/mksquashfs: Datei oder Verzeichnis nicht gefunden
Na steht doch eindeutig da was fehlt!
Dir fehlt mksquahsfs.
Kermit21
Interessierter
Interessierter
Beiträge: 98
Registriert: Mittwoch 12. März 2003, 12:40
Image: Kabel - diverse

Beitrag von Kermit21 »

Was meinst Du mit 'was für ein target'?

Ich nutze debian Linux, aber was spielt das für eine Rolle? Habe extra einen neuen User für das cdk angelegt, den ich dboxcdk genannt habe. 'make download' hat immer abgebrochen, wenn es ein Paket nicht downloaden konnte (zu der Zeit waren wohl einige sourceforge-Projektseiten nicht erreichbar). Die habe ich dann von anderen mirrors genommen und nach Archive/ geschoben, wo auch die automatisch gedownloadeten gelandet sind. Habe 108 Datein in Archive/

Achja in ~/dbox2/cdk/bin habe ich seltsamerweise _kein_ mksquashfs (vielleicht darum die Fehlermeldung). Soll man das per Hand da rein kopieren? In Archive/ liegen durch 'make download' automatisch runtergeladen
squashfs2.2r2.tar.gz
squashfs3.0.tar.gz

mksquashfs habe ich in /usr/local/bin liegen:

Code: Alles auswählen

.-(~/tuxbox-cvs/cdk)-----------------------------------(dboxcdk@p3-1k2)-
`--> whereis mksquashfs
mksquashfs: /usr/local/bin/mksquashfs
.-(~/tuxbox-cvs/cdk)-----------------------------------(dboxcdk@p3-1k2)-
`--> mksquashfs -version
mksquashfs version 3.1-r2 (2006/08/30)
copyright (C) 2006 Phillip Lougher <phillip@lougher.org.uk>

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2,
or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.
.-(~/tuxbox-cvs/cdk)-----------------------------------(dboxcdk@p3-1k2)-
`-->                                                 
Muss ich mein eigenes mksquashfs nun von Hand darein kopieren?


Nachtrag: Ok, hab's dahin kopiert und er ist nun fehlerfrei fertig geworden. Aber dropbear kompiliert immer noch nicht :(

Code: Alles auswählen

.-(~/dbox2/cdkflash)-----------------------------------(dboxcdk@p3-1k2)-
`--> ls -lh
insgesamt 22M
drwxr-xr-x 12 dboxcdk dboxcdk 4,0K 2006-11-05 17:03 root
-rwx------  1 dboxcdk dboxcdk 5,3M 2006-11-06 20:49 root-squashfs-neutrino.img
-rw-r--r--  1 dboxcdk dboxcdk 128K 2006-11-06 20:50 squashfs-flfs1x.img
-rw-r--r--  1 dboxcdk dboxcdk 128K 2006-11-06 20:50 squashfs-flfs2x.img
-rw-r--r--  1 dboxcdk dboxcdk 7,9M 2006-11-06 20:53 squashfsjffs2neutrino_1x.img
-rw-r--r--  1 dboxcdk dboxcdk 7,9M 2006-11-06 20:53 squashfsjffs2neutrino_2x.img
-rw-r--r--  1 dboxcdk dboxcdk 128K 2006-11-06 20:49 var-jffs2.img
Zuletzt geändert von Kermit21 am Montag 6. November 2006, 20:57, insgesamt 1-mal geändert.
noro
Interessierter
Interessierter
Beiträge: 20
Registriert: Samstag 17. Juni 2006, 16:27

Beitrag von noro »

du solltest mksquashfs unter /usr/bin kopieren.
Kermit21
Interessierter
Interessierter
Beiträge: 98
Registriert: Mittwoch 12. März 2003, 12:40
Image: Kabel - diverse

Beitrag von Kermit21 »

danke, das klappt jetzt. Aber eigentlich interessiert mich das nicht. Ich wollte gar kein eigenes Image bauen, sondern eigentlich nur ein kleines dropbear binary kompilieren :(
Nun habe ich ein scheinbar funktionierendes cdk, aber kann immer noch kein dropbear kompilieren.
Houdini
Developer
Beiträge: 2183
Registriert: Mittwoch 10. Dezember 2003, 07:59

Beitrag von Houdini »

du solltest mksquashfs unter /usr/bin kopieren.
Falsch, das mksquashfs sollte selber erstellt werden. (muss mal schauen warum nicht)
Wenn du das selber dahin kopierst geht das image wahrscheinlich nicht
Houdini
Developer
Beiträge: 2183
Registriert: Mittwoch 10. Dezember 2003, 07:59

Beitrag von Houdini »

der mksquashfs Fehler sollte jetzt im cvs gefixt sein
make dropbear läuft problemlos durch
rm -f dropbear
ln -s dropbearmulti dropbear
rm -f dropbearkey
ln -s dropbearmulti dropbearkey
rm -f scp
ln -s dropbearmulti scp
make[1]: Leaving directory `/home/harald/tuxbox-cvs/head-cvs/cdk/dropbear-0.48.1'
rm -rf dropbear-0.48.1
touch .deps/dropbear
harald@houdini-neu:~/tuxbox-cvs/head-cvs/cdk$
Kermit21
Interessierter
Interessierter
Beiträge: 98
Registriert: Mittwoch 12. März 2003, 12:40
Image: Kabel - diverse

Beitrag von Kermit21 »

hm, bei mir aber nicht. Es scheint so, als nimmt er irgendwo falsche gcc-Parameter her.
make all, usw klappen ja.

Nur bei male dropbear bekomme ich genannten Fehler, das gcc keine executables schaffen kann. Habe jetzt mal ein blick in die config-log geschaut:

Code: Alles auswählen

  $ ./configure --build=i686-pc-linux-gnu --host=powerpc-tuxbox-linux-gnu --prefix= --disable-syslog --disable-shadow --disable-lastlog --disable-utmp --disable-utmpx --disable-wtmp --disable-wtmpx

## --------- ##
## Platform. ##
## --------- ##

hostname = p3-1k2
uname -m = i686
uname -r = 2.6.16-dom001
uname -s = Linux
uname -v = #1 PREEMPT Wed Mar 22 17:38:04 CET 2006

/usr/bin/uname -p = unknown
/bin/uname -X     = unknown

/bin/arch              = i686
/usr/bin/arch -k       = unknown
/usr/convex/getsysinfo = unknown
/usr/bin/hostinfo      = unknown
/bin/machine           = unknown
/usr/bin/oslevel       = unknown
/bin/universe          = unknown

PATH: /home/dboxcdk/dbox2/cdk/bin
PATH: /usr/local/bin
PATH: /usr/bin
PATH: /bin
PATH: /usr/bin/X11
PATH: /usr/games
PATH: .
PATH: /usr/local/java/bin/
PATH: /usr/local/kde/bin


## ----------- ##
## Core tests. ##
## ----------- ##

configure:1708: checking for powerpc-tuxbox-linux-gnu-gcc
configure:1724: found /home/dboxcdk/dbox2/cdk/bin/powerpc-tuxbox-linux-gnu-gcc
configure:1735: result: powerpc-tuxbox-linux-gnu-gcc
configure:2013: checking for C compiler version
configure:2020: powerpc-tuxbox-linux-gnu-gcc --version >&5
powerpc-tuxbox-linux-gnu-gcc (GCC) 3.4.4
Copyright (C) 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

configure:2023: $? = 0
configure:2030: powerpc-tuxbox-linux-gnu-gcc -v >&5
Reading specs from /home/dboxcdk/dbox2/cdk/lib/gcc/powerpc-tuxbox-linux-gnu/3.4.4/specs
Configured with: ../gcc-3.4.4/configure --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --target=powerpc-tuxbox-linux-gnu --prefix=/home/dboxcdk/dbox2/cdk --with-cpu=823 --enable-target-optspace --enable-languages=c,c++ --enable-shared --enable-threads --disable-nls --without-fp
Thread model: posix
gcc version 3.4.4
configure:2033: $? = 0
configure:2040: powerpc-tuxbox-linux-gnu-gcc -V >&5
powerpc-tuxbox-linux-gnu-gcc: `-V' option must have argument
configure:2043: $? = 1
configure:2066: checking for C compiler default output file name
configure:2093: powerpc-tuxbox-linux-gnu-gcc -march=pentium3 -mcpu=pentium3 -O3   conftest.c  >&5
cc1: error: invalid option `arch=pentium3'
conftest.c:1: error: bad value (pentium3) for -mcpu= switch
configure:2096: $? = 1
configure:2134: result:
configure: failed program was:
| /* confdefs.h.  */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| /* end confdefs.h.  */
|
| int
| main ()
| {
|
|   ;
|   return 0;
| }
configure:2141: error: C compiler cannot create executables
See `config.log' for more details.
Die Parameter "-march=pentium3 -mcpu=pentium3 -O3" stammen eindeutig aus meinen Umgebungsvariablen CFLAGS oder CXXFLAGS. Die habe ich selber vor sehr langer Zeit (quasi bei Erstinstallation meines Systems) so gesetzt.
Scheinbar hat der Cross-Compiler das so auch mitübernommen?
Wenn ich ein 'export CFLAGS=""' und 'export CXXFLAGS=""' mache, sowie das dropbear Verzeichnis noch mal loesche (rm -rf dropbear-0.48.1) und erneut ein emake dropbear' ausführe, stehen diese Parameter wieder in der config log. Scheinbar sind die schon bei einem früheren Prozess irgendwie in die cdk 'eingebrannt' wurden?

In der config.log steht weiter unter Cache Variables und Output Variables:
ac_cv_env_CFLAGS_value='-march=pentium3 -mcpu=pentium3 -O3'
sowie
CFLAGS='-march=pentium3 -mcpu=pentium3 -O3'
Wo nimmt er das her?

Ist der configure-Aufruf für dropbear denn sonst in Ordnung mit --build=i686-pc-linux-gnu --host=powerpc-tuxbox-linux-gnu

Müsste es nicht auch "-build=ppc" oder so ähnlich heißen?



Zur gefixten CVS: Wenn ich nun ein 'cvs update' mache, kann ich dann einfach das "richtige" mksquashfs noch mal erstellen lassen (das selbstkopiere lösche ich natürlich vorher wieder aus ~/dbox2/cdk/bin)? Macht er das automatisch oder muss ich irgendwas in .deps löschen?
Kermit21
Interessierter
Interessierter
Beiträge: 98
Registriert: Mittwoch 12. März 2003, 12:40
Image: Kabel - diverse

Beitrag von Kermit21 »

Juhu, es klappt endlich!
Ich habe einfach gesehen, dass in vielen files in ~/tuxbox-cvs/cdk meine persönlichen CFLAGS-Parameter mit übernommen habe.
Als ich die CFLAG="" gesetzt habe und nun nochmal ein "./configure –prefix=$HOME/dbox2 –with-cvsdir=$HOME/tuxbox-cvs --enable-maintainer-mode –with-targetruleset=flash" ausgeführt habe, fand sich der string pentium3 nicht mehr (gesucht mit: grep pentium3 *). Nun kompiliert auch dropbear durch!

Fazit: Das "normale" bauen mit 'make all' oder 'make flash-squashfsneutrinoimages' läuft auch trotz persönlicher CFLAGS durch. 'make dropbear', 'make openssh' oder ähnliches scheint sich daran zu stören. Können das die Entwickler vielleicht auch mal fixen?
Ich habe jetzt erst mal
export CFLAGS=""
export CXXFLAGS=""
in meine ~/.zshrc mit aufgenommen für meinen dboxcdk-User