Ankündigung

Einklappen
Keine Ankündigung bisher.

Howto - eibd installieren

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • mkoegler
    antwortet
    Zitat von rambuster Beitrag anzeigen
    Letzte Frage: die Verzeichnisse unterhalb von /home/olaf/arm_develop/projects/eibd_dns323 kopiere ich dann nach /opt/* oder lieber nach /usr/*? Je nachdem, wo's mir besser gefällt?
    Du musst .../lib/libpthsem*so* in ein vom dyn. Linker durchsuchtes Verzeichnis kopieren (wie /lib bzw. /usr/lib).

    Vom Rest kannst du in ein Verzeichnis deiner Wahl kopieren, was du brauchst/willst. Die Position ist egal. echo $PATH am Target gibt eine Liste von Verzeichnisen aus, wo Programme wie eibd auch ohne Angabe vom Pfad gefunden werden.

    Einen Kommentar schreiben:


  • rambuster
    antwortet
    Fotofinish...

    Das war der Tip, der fehlte. Ich hab den eibd tatsächlich kompiliert bekommen. Ich schreibs nochmal zusammen und poste es hier. Wenn ich dann noch ein ipk baue, kriegst du ne Kopie... (Jetzt muss ich nur noch einen ebenso hilfsbereiten Menschen mit ipk-Kenntnissen finden... ;-))

    Letzte Frage: die Verzeichnisse unterhalb von /home/olaf/arm_develop/projects/eibd_dns323 kopiere ich dann nach /opt/* oder lieber nach /usr/*? Je nachdem, wo's mir besser gefällt?

    Extrem herzlichen Dank für die ganze Hilfe! :-)
    VG
    ram

    Einen Kommentar schreiben:


  • mkoegler
    antwortet
    Zitat von rambuster Beitrag anzeigen
    jedenfalls bricht
    LDFLAGS="-L/home/olaf/arm_develop/projects/eibd_dns323/lib/" ./configure --host=arm-linux-uclibc --enable-onlyeibd --with-pth="/home/olaf/arm_develop/projects/eibd_dns323/" --without-pth-test --enable-eibnetip --enable-eibnetiptunnel --enable-eibnetipserver --prefix=/home/olaf/arm_develop/projects/eibd_dns323
    mit
    checking argp.h usability... no
    checking argp.h presence... no
    checking for argp.h... no
    configure: error: argp_parse not found

    ab.

    wobei /home/olaf/arm_develop/projects/eibd_dns323 das --prefix für die anderen configures war. Daher sind dort sowohl argp.h in include als auch libargp.a in lib vorhanden...
    Ich würde
    CPPFLAGS="-I/home/olaf/arm_develop/projects/eibd_dns323/include/"
    in die Zeile vor LDFLAGS stellen (jeweils durch ein Blank getrennt).

    Einen Kommentar schreiben:


  • rambuster
    antwortet
    Noch näher dran...

    Hallo... again,

    nachdem ich mich so langsam rangetastet habe, scheitere ich vermutlich an der Einbindung von argp...

    jedenfalls bricht
    LDFLAGS="-L/home/olaf/arm_develop/projects/eibd_dns323/lib/" ./configure --host=arm-linux-uclibc --enable-onlyeibd --with-pth="/home/olaf/arm_develop/projects/eibd_dns323/" --without-pth-test --enable-eibnetip --enable-eibnetiptunnel --enable-eibnetipserver --prefix=/home/olaf/arm_develop/projects/eibd_dns323
    mit
    checking argp.h usability... no
    checking argp.h presence... no
    checking for argp.h... no
    configure: error: argp_parse not found

    ab.

    wobei /home/olaf/arm_develop/projects/eibd_dns323 das --prefix für die anderen configures war. Daher sind dort sowohl argp.h in include als auch libargp.a in lib vorhanden...

    Wie würde es da weitergehen?

    Einen Kommentar schreiben:


  • mkoegler
    antwortet
    Zitat von rambuster Beitrag anzeigen
    pthsem hab ich kompiliert bekommen, allerdings scheint der Teil für den eibd mindestens einen Fehler zu enthalten
    die Option --enably-onlyeibd müsste doch --enable-onlyeibd heissen, oder?
    Richtig, da ist ein Tippfehler.

    Zitat von rambuster Beitrag anzeigen
    Und ich bin mir nicht sicher, ob in der configure-Zeile nicht ein <Return> fehlt, zumindest verwirrt mich die Angabe von LDFLAGS vor dem Aufruf von ./configure...
    Des gehört schon so. So übernimmt configure den Inhalt von LDFLAGs

    Zitat von rambuster Beitrag anzeigen
    Ein grosses Problem (für mich) ist aber die Auswahl der richtigen Verzeichnisse. Du schreibst da bei den Parametern, man solle /path/to/empty/dir angeben. Für pthsem habe ich mir schon gedacht, dass mit --prefix dort das Zielverzeichnis für die zu erstellenenden Dateien gemeint ist (auf das später beim eibd-configure verwiesen wird)
    Aber welches /path/to/empty/dir soll ich bei LDFLAGS angeben? Wo doch LDFLAGS eigentlich auf ein Verzeichnis mit libs verweisen soll (laut --help)
    Im Prinzip ersetzt man den String /path/to/empty/dir durch einen Verzeichnisnamen eigener Wahl, wo (bei einen Anfänger) nichts anderes stehen sollte. Bei LDFLAGS wird auf das Unterverzeichnis lib darin verwiesen.

    Zitat von rambuster Beitrag anzeigen
    Welches ist den eigentlich mein Target? Ich hab pthsem mit --host=arm compiliert, müsste ich da nicht besser --host=arm-uclib angeben?
    Nimm den Namen des Cross-compilers (XXX-gcc) und tue das -gcc weg, dann hast du den Targetnamen.

    configure ergänzt fehlende Namensteile; das Ergebniss sieht man im Output davon. Ganz wichtig ist die Angabe der Architektur (arm, mips, usw.), da sonst für den PC compiliert wird.
    Wenn am nicht mehrere Cross-Compiling Umgebungen für eine Architektur installiert hat, kann man sich oft die weiteren Angaben sparen.


    PS: Mein HOWTO steht in einen Wiki, wo jeder registrierte SF.net User Änderungen machen darf.

    Einen Kommentar schreiben:


  • rambuster
    antwortet
    Fast am Ziel

    Hallo Michael

    so, nun hab ich eine funktionierende Toolchain auf einer Ubuntu-VM gebastelt (ging natürlich auch nicht ohne ein paar Detailänderungen) und ich hab mich dann mit dem BCUSDK und deiner Cross-Compiling Anleitung beschäftigt...

    pthsem hab ich kompiliert bekommen, allerdings scheint der Teil für den eibd mindestens einen Fehler zu enthalten
    die Option --enably-onlyeibd müsste doch --enable-onlyeibd heissen, oder?

    Und ich bin mir nicht sicher, ob in der configure-Zeile nicht ein <Return> fehlt, zumindest verwirrt mich die Angabe von LDFLAGS vor dem Aufruf von ./configure...

    Ein grosses Problem (für mich) ist aber die Auswahl der richtigen Verzeichnisse. Du schreibst da bei den Parametern, man solle /path/to/empty/dir angeben. Für pthsem habe ich mir schon gedacht, dass mit --prefix dort das Zielverzeichnis für die zu erstellenenden Dateien gemeint ist (auf das später beim eibd-configure verwiesen wird)
    Aber welches /path/to/empty/dir soll ich bei LDFLAGS angeben? Wo doch LDFLAGS eigentlich auf ein Verzeichnis mit libs verweisen soll (laut --help)

    Welches ist den eigentlich mein Target? Ich hab pthsem mit --host=arm compiliert, müsste ich da nicht besser --host=arm-uclib angeben?

    Kannst Du mir da nochmal aufs Rad helfen? Thx
    Cu, ram

    Einen Kommentar schreiben:


  • mkoegler
    antwortet
    Zitat von rambuster Beitrag anzeigen
    Wie's aussieht, weisen alle arm-basierten eibd/pthsem-ipk-Pakete von Index of /linknx den gleichen ldd-Output auf. Da scheint es keinen Kandidaten zu geben, der aussichtsreicher ausschaut... hab sie alle durchgetestet.
    Theoretisch müßte dieser EIBD nicht gegen 2 libc gelinkt sein, sondern die zweite libc kann indirekt über eine Systembibliothek (zB libgcc) hineingeholt werden:

    Wenn ich mich nicht irre, müßte der Webmaster von den oben genannten Link auch schon im Forum gewesen sein (jef2000???). Ich würde einmal beim Ersteller der Packete nachfragen.

    Einen Kommentar schreiben:


  • rambuster
    antwortet
    Zitat von mkoegler Beitrag anzeigen
    Ich würde auch zustimmen, das die Architektur passt.
    Das ist ja schonmal was... :-D

    Ich würde aufpassen, da der EIBD anscheinend gegen 2 libc und 2 libm gelinkt wurde. Das kann eventuell zu unerwarteten Verhaltensweisen führen. Ausserdem braucht es unnötig Platz.
    Wie's aussieht, weisen alle arm-basierten eibd/pthsem-ipk-Pakete von http://ouaye.net/linknx/ den gleichen ldd-Output auf. Da scheint es keinen Kandidaten zu geben, der aussichtsreicher ausschaut... hab sie alle durchgetestet.

    Wenn Du keine weiteren Tricks bzgl. der libraries hast, werde ich mich mal daran machen, das Ding für mein NAS zu kompilieren.
    Es bleibt spannend.

    Einen Kommentar schreiben:


  • mkoegler
    antwortet
    Zitat von rambuster Beitrag anzeigen
    Code:
    root@dlink-6426C2:~# ldd /opt/bin/eibd
    ldd: can't open cache '/ffp/etc/ld.so.cache'
    checking sub-depends for '/opt/lib/libpthsem.so.20'
    checking sub-depends for 'not found'
    checking sub-depends for 'not found'
    checking sub-depends for '/ffp/lib/libstdc++.so.6'
    checking sub-depends for 'not found'
    checking sub-depends for '/lib/libgcc_s.so.1'
    checking sub-depends for 'not found'
    checking sub-depends for '/ffp/lib/libm.so.0'
    checking sub-depends for '/ffp/lib/libc.so.0'
            libpthsem.so.20 => /opt/lib/libpthsem.so.20 (0x00000000)
            libdl.so.2 => not found (0x00000000)
            libnsl.so.1 => not found (0x00000000)
            libstdc++.so.6 => /ffp/lib/libstdc++.so.6 (0x00000000)
            libm.so.6 => not found (0x00000000)
            libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00000000)
            libc.so.6 => not found (0x00000000)
            libm.so.0 => /ffp/lib/libm.so.0 (0x00000000)
            libc.so.0 => /ffp/lib/libc.so.0 (0x00000000)
            /ffp/lib/ld-uClibc.so.0 => /ffp/lib/ld-uClibc.so.0 (0x00000000)
    Ich schätze mal, dass es an fehlenden libraries liegt. Hast du einen Tip, in welchen ipks (optware) die enthalten sind?
    Edit:
    Code:
    ln -s libm-0.9.29.so libm.so.6
    (für die anderen analog) hat leider nix gebracht, obwohl ldd dann freundlicher aussieht.
    mit
    Code:
    ipkg whatprovides libm.so.6
    lässt sich auch nichts ermitteln, das hat mein ipkg wohl nicht ausreichend implementiert... *grrr* oder ich mach was falsch *doppel-grrr*
    Ich würde auch zustimmen, das die Architektur passt.

    libm.so.6 sieht nach glibc (oder einer Variante wie eglibc davon) aus. libm.so.0 wird wahrscheinlich die uClibc sein.

    Ich würde aufpassen, da der EIBD anscheinend gegen 2 libc und 2 libm gelinkt wurde. Das kann eventuell zu unerwarteten Verhaltensweisen führen. Ausserdem braucht es unnötig Platz.

    Einen Kommentar schreiben:


  • rambuster
    antwortet
    Zitat von mkoegler Beitrag anzeigen
    EIBD ist eigenlich nur als Nebensache entstanden. Immerhin heisst das Project "BCU SDK with eibd" ;-)
    okay, okay, ich hab öfter Tomaten auf den Augen... ;-)
    Das hilft weiter. Also entweder ist der EIBD inkompatibel zu deinen System (was sagt
    Code:
    file /opt/bin/eibd
    uname -a
    )
    ergibt:
    Code:
    /opt/bin/eibd: ELF 32-bit LSB executable, ARM, version 1, for GNU/Linux 2.4.3, dynamically linked (uses shared libs), stripped
    bzw:
    Linux dlink-6426C2 2.6.12.6-arm1 #31 Thu Mar 26 18:20:41 CST 2009 armv5tejl unknown
    Für das bischen, was ich mich traue daraus abzuleiten, finde ich "ARM, version 1" entspricht "2.6.12.6-arm1"?

    oder es fehlt eine Bibliothek:
    Code:
    ldd /opt/bin/eibd
    ergibt:
    Code:
    root@dlink-6426C2:~# ldd /opt/bin/eibd
    ldd: can't open cache '/ffp/etc/ld.so.cache'
    checking sub-depends for '/opt/lib/libpthsem.so.20'
    checking sub-depends for 'not found'
    checking sub-depends for 'not found'
    checking sub-depends for '/ffp/lib/libstdc++.so.6'
    checking sub-depends for 'not found'
    checking sub-depends for '/lib/libgcc_s.so.1'
    checking sub-depends for 'not found'
    checking sub-depends for '/ffp/lib/libm.so.0'
    checking sub-depends for '/ffp/lib/libc.so.0'
            libpthsem.so.20 => /opt/lib/libpthsem.so.20 (0x00000000)
            libdl.so.2 => not found (0x00000000)
            libnsl.so.1 => not found (0x00000000)
            libstdc++.so.6 => /ffp/lib/libstdc++.so.6 (0x00000000)
            libm.so.6 => not found (0x00000000)
            libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00000000)
            libc.so.6 => not found (0x00000000)
            libm.so.0 => /ffp/lib/libm.so.0 (0x00000000)
            libc.so.0 => /ffp/lib/libc.so.0 (0x00000000)
            /ffp/lib/ld-uClibc.so.0 => /ffp/lib/ld-uClibc.so.0 (0x00000000)
    Ich schätze mal, dass es an fehlenden libraries liegt. Hast du einen Tip, in welchen ipks (optware) die enthalten sind?
    Edit:
    Code:
    ln -s libm-0.9.29.so libm.so.6
    (für die anderen analog) hat leider nix gebracht, obwohl ldd dann freundlicher aussieht.
    mit
    Code:
    ipkg whatprovides libm.so.6
    lässt sich auch nichts ermitteln, das hat mein ipkg wohl nicht ausreichend implementiert... *grrr* oder ich mach was falsch *doppel-grrr*

    Edit2: Hab irgendwo gelesen, dass die DNS323 Firmware auf uclibc aufbaut. Ist das die Richtung, aus der eine Lösung winken könnte?

    PS: Auf soviel Einzelfallbehandlung hatte ich kaum zu hoffen gewagt. Wenn ich das hinkriege, schreib ich was zusammen, dass du den Anwendungsfall "DNS323" mit ins wiki aufnehmen kannst... Danke schonmal

    Einen Kommentar schreiben:


  • mkoegler
    antwortet
    Zitat von rambuster Beitrag anzeigen
    Mir war nicht klar, dass der eibd im SDK enthalten ist...
    EIBD ist eigenlich nur als Nebensache entstanden. Immerhin heisst das Project "BCU SDK with eibd" ;-)
    Zitat von rambuster Beitrag anzeigen
    root@xxxx:~# ls /opt/bin/ei*
    /opt/bin/eibd /opt/bin/eibnetdescribe /opt/bin/eibnetsearch
    root@xxxx:~# strace /opt/bin/eibd
    execve("/opt/bin/eibd", ["/opt/bin/eibd"], [/* 19 vars */]) = -1 ENOENT (No such file or directory)
    Das hilft weiter. Also entweder ist der EIBD inkompatibel zu deinen System (was sagt
    Code:
    file /opt/bin/eibd
    uname -a
    ) oder es fehlt eine Bibliothek:
    Code:
    ldd /opt/bin/eibd

    Einen Kommentar schreiben:


  • Chris M.
    antwortet
    Zitat von rambuster Beitrag anzeigen
    Mir war nicht klar, dass der eibd im SDK enthalten ist...
    Ja, dafür dass der eibd für die meisten das wichtigste Programm ist, ist der gut versteckt. Hatte mich damals auch etwas Zeit und Verständnis gekostet...

    Einen Kommentar schreiben:


  • rambuster
    antwortet
    Danke schonmal für die Hinweise, da hab ich dann wieder was zum Nachforschen! :-) Mir war nicht klar, dass der eibd im SDK enthalten ist...

    Zitat von mkoegler Beitrag anzeigen
    Code:
    strace /opt/bin/eibd
    würde mehr sagen.
    sagt:
    Code:
    root@xxxx:~# ls /opt/bin/ei*
    /opt/bin/eibd            /opt/bin/eibnetdescribe  /opt/bin/eibnetsearch
    root@xxxx:~# strace /opt/bin/eibd
    execve("/opt/bin/eibd", ["/opt/bin/eibd"], [/* 19 vars */]) = -1 ENOENT (No such file or directory)
    write(2, "strace: exec: No such file or di"..., 40strace: exec: No such file or directory
    ) = 40
    exit(1)                                 = ?
    sagt mir aber leider gar nix... :-(

    Einen Kommentar schreiben:


  • mkoegler
    antwortet
    Zitat von rambuster Beitrag anzeigen
    die sog. Toolchain baue ich auf einer normalen (virtuellen) linux Installation und dort compile ich auch? Oder passiert sowas auf der DNS selbst?
    Man kann im Prinzip beides machen. Für die zweite Lösung muss das Target (bei dir DNS) Leistungsfähigier sein: Es braucht mehr Speicherplatz, da GCC & Co installiert werden müssen. Dafür ist die Installation einfacher.

    CrossCompiling ? BCU SDK with eibd

    Zitat von rambuster Beitrag anzeigen
    die Sources springen mich irgendwie nicht so direkt an, wo würde ich die herkriegen?
    => BCU SDK with eibd | Get BCU SDK with eibd at SourceForge.net

    Da findet man alle Teile downloaden.

    Zitat von rambuster Beitrag anzeigen
    wenn ich irgendwas was kompiliert bekommen habe, muss ich mir dann noch ein .ipk für optware (ipkg) bauen?
    Nein. Man kann die nötigen Teile einfach auf Target kopieren. Ein Packet vereinfacht nur die Installation, es muss sich nur einer die Mühe machen, das ipkg einmal zu erstellen.

    Zitat von rambuster Beitrag anzeigen
    Gibts einen einfacheren Weg? Ich habe schon einige ipk-Pakete (für ARM devices) ausprobiert, aber jedesmal sagt mir eibd: No such file or directory. /opt/bin/eibd existiert aber und liegt im Pfad...
    Code:
    strace /opt/bin/eibd
    würde mehr sagen.

    Einen Kommentar schreiben:


  • saschenka
    antwortet
    Zitat von kobza Beitrag anzeigen
    Hi Sascha,

    das mit dem FT12 hat nicht funktioniert (ich habe die Verbindung zwischen der internent RS232 der Fritzbox und einer FT12 nicht hinbekommen), habe mir ein IP Schnittstelle gekauft, das eibd habe ich aber für FT12 kompiliert,
    brauchst Du es?

    Gruß
    Kobza
    Hallo Kobza,

    vielen Dank für die Info, aber ich brauche die für FT12 kompilierte Version dann auch nicht. Ich werde wohl auch den Weg über Siemens EIB/IP Schnittstelle nehmen.

    Gruß
    Sascha

    Einen Kommentar schreiben:

Lädt...
X