Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - Cross-Compile BCU-SDK für Syno DS110j (arm)

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

    KNX/EIB - √ - Cross-Compile BCU-SDK für Syno DS110j (arm)

    Hallo zusammen

    ich bin am Versuch, die BCU-SDK für eine Synologic DS110j mit einem Marvell Kirkwood mv6281 ARM Processor zu compilieren.

    Meine Workstation zum Compilieren ist eine Ubuntu 8.0.4. Darauf habe ich gemäss Anleitung eine Compiler-Umgebung aufgebaut.

    Nun versuche ich, mit folgendem Kommando, den Build zu machen:
    Code:
    ./configure --build=arm-unknown-linux-gnu --prefix=$PREFIX --with-pth=yes --without-pth-test --enable-onlyeibd
    Ich bekomme aber folgende FM im config.log:
    Code:
    configure:15586: $? = 0
    configure:15586: result: yes
    configure:15586: checking for sys/time.h
    configure:15586: result: yes
    configure:15599: checking build system compiler /usr/cross/arm/bin/arm-unknown-linux-gnu-gcc
    configure:15612: /usr/cross/arm/bin/arm-unknown-linux-gnu-gcc conftest.c
    conftest.c: In function 'main':
    conftest.c:4:3: warning: incompatible implicit declaration of built-in function 'exit' [enabled by default]
    /tmp/ccqdfpVW.s: Assembler messages:
    /tmp/ccqdfpVW.s:7: Error: junk at end of line, first unrecognized character is `@'
    /tmp/ccqdfpVW.s:8: Error: junk at end of line, first unrecognized character is `@'
    /tmp/ccqdfpVW.s:9: Error: no such instruction: `stmfd sp!,{fp,lr}'
    /tmp/ccqdfpVW.s:10: Error: too many memory references for `add'
    /tmp/ccqdfpVW.s:11: Error: expecting operand after ','; got nothing
    /tmp/ccqdfpVW.s:12: Error: no such instruction: `bl exit'
    configure:15615: $? = 1
    configure:15622: result: no
    configure:15627: error: Specified CC_FOR_BUILD doesn't seem to work
    Ich habe foldende Envoirements-Variablen gesetzt:
    Code:
    CPP_FOR_BUILD=/usr/cross/arm/bin/arm-unknown-linux-gnu-cpp
    CC_FOR_BUILD=/usr/cross/arm/bin/arm-unknown-linux-gnu-gcc
    LIBS_FOR_BUILD=/usr/cross/arm/lib
    LD_LIBRARY_PATH=/usr/cross/arm/lib
    Kann mich jemand unterstützen?

    Gruss
    Tom

    #2
    Zitat von Mr_Tom Beitrag anzeigen
    Nun versuche ich, mit folgendem Kommando, den Build zu machen:
    Code:
    ./configure --build=arm-unknown-linux-gnu --prefix=$PREFIX --with-pth=yes --without-pth-test --enable-onlyeibd
    Ich bekomme aber folgende FM im config.log:
    Code:
    configure:15586: $? = 0
    configure:15586: result: yes
    configure:15586: checking for sys/time.h
    configure:15586: result: yes
    configure:15599: checking build system compiler /usr/cross/arm/bin/arm-unknown-linux-gnu-gcc
    configure:15612: /usr/cross/arm/bin/arm-unknown-linux-gnu-gcc conftest.c
    conftest.c: In function 'main':
    conftest.c:4:3: warning: incompatible implicit declaration of built-in function 'exit' [enabled by default]
    /tmp/ccqdfpVW.s: Assembler messages:
    /tmp/ccqdfpVW.s:7: Error: junk at end of line, first unrecognized character is `@'
    /tmp/ccqdfpVW.s:8: Error: junk at end of line, first unrecognized character is `@'
    /tmp/ccqdfpVW.s:9: Error: no such instruction: `stmfd sp!,{fp,lr}'
    /tmp/ccqdfpVW.s:10: Error: too many memory references for `add'
    /tmp/ccqdfpVW.s:11: Error: expecting operand after ','; got nothing
    /tmp/ccqdfpVW.s:12: Error: no such instruction: `bl exit'
    configure:15615: $? = 1
    configure:15622: result: no
    configure:15627: error: Specified CC_FOR_BUILD doesn't seem to work
    Ich habe foldende Envoirements-Variablen gesetzt:
    Code:
    CPP_FOR_BUILD=/usr/cross/arm/bin/arm-unknown-linux-gnu-cpp
    CC_FOR_BUILD=/usr/cross/arm/bin/arm-unknown-linux-gnu-gcc
    LIBS_FOR_BUILD=/usr/cross/arm/lib
    LD_LIBRARY_PATH=/usr/cross/arm/lib
    *_FOR_BUILD muss ein Compiler/Umgebung sein, der für den Host Rechner (dh. in dem Fall deinen Ubuntu-Rechner) erzeugt.

    CrossCompiling
    Die Anleitung gilt aber nur bis Commit e968d85d08b04748ef4bb1ec26370983ce0deb81 (falls du GIT Versionen verwendest).

    Kommentar


      #3
      Tipp am Rande: bei so dicken Kisten ist es für nicht-automake-versteher (wie mich selbst) einfacher das einfach nativ auf der Kiste zu bauen, geht schmerzfrei.. (Der etwas betagte eibd für die DS207 hier in den Downloads wurde so gemacht und sollte da auch tun..)

      Makki
      EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
      -> Bitte KEINE PNs!

      Kommentar


        #4
        So, nun habe ich auch noch Makki's Tip befolgt und versucht, den eibd auf dem Syno direkt zu compilieren. Pthsem 2.0.8 habe hingekriegt, beim BCU SDK gibt noch Probleme:

        Code:
        make[4]: Entering directory `/root/bcusdk-0.0.5/eibd/client/php'
        if g++ -DHAVE_CONFIG_H -I. -I../../..  -I../../../eibd/include -I../../../eibd/client -I../../../eibd/client   -g -O2 -fno-rtti -fno-exceptions -D__cplusplus -MT EIBConnection.post -MD -MP -MF ".deps/EIBConnection.Tpo" -E -P -x c -O0 -o EIBConnection.post EIBConnection.pre; \
        then mv -f ".deps/EIBConnection.Tpo" ".deps/EIBConnection.Po"; else rm -f ".deps/EIBConnection.Tpo"; exit 1; fi
        cc1: warning: command line option "-fno-rtti" is valid for C++/ObjC++ but not for C
        In file included from ../../../eibd/client/def/all.lst:30,
                         from EIBConnection.pre:41:
        ../../../eibd/client/def/getapdu.inc:40:1: error: pasting "$" and "buf" does not give a valid preprocessing token
        ../../../eibd/client/def/getapdu.inc:40:1: error: pasting "$" and "buf" does not give a valid preprocessing token
        ../../../eibd/client/def/getapdu.inc:40:1: error: pasting "$" and "buf" does not give a valid preprocessing token
        ../../../eibd/client/def/getapdu.inc:40:1: error: pasting "$" and "buf" does not give a valid preprocessing token
        In file included from ../../../eibd/client/def/all.lst:31,
                         from EIBConnection.pre:41:
        ../../../eibd/client/def/getapdusrc.inc:42:1: error: pasting "$" and "buf" does not give a valid preprocessing token
        ../../../eibd/client/def/getapdusrc.inc:42:1: error: pasting "$" and "src" does not give a valid preprocessing token
        ../../../eibd/client/def/getapdusrc.inc:42:1: error: pasting "$" and "buf" does not give a valid preprocessing token
        ../../../eibd/client/def/getapdusrc.inc:42:1: error: pasting "$" and "src" does not give a valid preprocessing token
        .
        .
        .
        .
        .
        usw...
        Meine Kommandos:
        Code:
        ./configure --with-pth=yes --without-pth-test --enable-onlyeibd
        make
        Weiss wer Rat?

        Danke Thomas

        Kommentar


          #5
          Ich hatte da mit openwrt auch schonmal Probleme, was der compiler-Gott mir damit sagen will weiss ich zwar nicht aber wie mans löst:
          in eibd/client/Makefile (bzw. Makefile.am wenn ausm git mit automake)
          Code:
          -SUBDIRS=def c $(BUILDJAVA) php perl cs python pascal .
          +SUBDIRS=def c .
          Etwas hart, aber das sind ja nur die AFAIK plattformunabhängigen Client-libraries die man eh auch von beliebig von woanders nehmen kann daher hab ich mich da nie weiter drum bemüht..

          Makki
          EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
          -> Bitte KEINE PNs!

          Kommentar


            #6
            Yeah, es hat geklappt.

            Auf meiner DS110j läuft ein eibd!

            Danke makki für die Tips. Damit konnte ich kompilieren.

            Gruss
            Thomas

            Kommentar


              #7
              Umso besser, nach der 6. Plattform kennt man die Pitfalls eben
              Ich hab da aber teils so wilde zusammenkopiert und gepatcht das ich mich bei sowas ja selbst kaum zu fragen traue, aber wenn das auch mit dem 0.0.5-Release nativ passiert, werde ich das die Tage auch nochmal sauber nachvollziehen und auf die bcusdk-Liste posten, weil es dann vermutlich eher ein allgemeines Problem auf arm(el) mit den eibd/client ist.. (auf MIPS/dreambox erinnere ich mich an ähnliches)
              -> die Kernfrage bleibt für was, weil keiner braucht PHP, Pascal o.ä. Clients auf einem solchen Teil bauen und nutzen kann man sie ja trotzdem
              Schlimmstenfalls fehlt da einfach irgendwas und dann wünsche ich mir eine configure-Option, um diese Clients-Libs abzuschalten ohne in Makefiles rumzufummeln
              Versuch ich aber erst nochmal in sauber mit dem aktuellen 0.0.5..

              Makki
              EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
              -> Bitte KEINE PNs!

              Kommentar


                #8
                Zitat von Mr_Tom Beitrag anzeigen
                Weiss wer Rat?
                Was für eine GCC Version wird am Target verwendet:
                Code:
                g++ --version
                Mit GCC 4.2 bis 4.4 sollte es eigentlich problemlos funktionieren.

                Kommentar


                  #9
                  Hier mit OpenWRT Trunk/buildroot auf Ubuntu 11.04 war es gcc Ubuntu/Linaro 4.5.2-8ubuntu4, der Fehler war ähnlich, nicht zwangläufig derselbe (keine Ahnung, sorry, habs nicht aufgeschrieben..)
                  Wiegesagt auch nicht mit dem "original" ich stelle das die Tage mal sauber mit 0.0.5 nach und schicke einen Report an bcusdk-devel..

                  Makki
                  EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
                  -> Bitte KEINE PNs!

                  Kommentar


                    #10
                    Zitat von makki Beitrag anzeigen
                    Ich hatte da mit openwrt auch schonmal Probleme, was der compiler-Gott mir damit sagen will weiss ich zwar nicht aber wie mans löst:
                    in eibd/client/Makefile (bzw. Makefile.am wenn ausm git mit automake)
                    Code:
                    -SUBDIRS=def c $(BUILDJAVA) php perl cs python pascal .
                    +SUBDIRS=def c .
                    Etwas hart, aber das sind ja nur die AFAIK plattformunabhängigen Client-libraries die man eh auch von beliebig von woanders nehmen kann daher hab ich mich da nie weiter drum bemüht..

                    Makki
                    Hallo,

                    zunächst einmal ein allgemeines Danke. Ich habe das wie oben beschrieben gleiche Problem gehabt und konnte es mit den Parametern für configure und der Anpassung von eibd/client/Makefile auf meinem FOXBOARD G20 eibd ans laufen bringen. Ob ich dann auch noch tasächlich die Verbindung zu meinem KNX-Bus hinbekomme bleibt noch offen da ich z.Zt. keine Schnittstelle habe.

                    Muss ich mir sorgen machen wegen der Aussage "etwas hart"?
                    Da ich mich mit der compiliererrei nicht so auskenne, meistens bietet mir das Debian Universum fertige Pakete an, mache ich mir etwas Sorgen falls ich auf dem FOXBOARD noch einmal etwas vergleichbares machen muss. Also noch einmal ein Programm compilieren.
                    Und wo kann ich nachschauen ob die Parameter bei configure wirklich die richtigen waren und ausser der mc68 Fehlermeldung nicht auch andere Dinge Unterdrückt hat dich ich womöglich benötige.


                    Viele Grüße

                    astralas

                    Kommentar


                      #11
                      Zitat von astralas Beitrag anzeigen
                      Muss ich mir sorgen machen wegen der Aussage "etwas hart"?
                      Meiner Meinung nach nicht. Ich habe seit drei Jahren dies als Patch für OpenWrt und noch nie Probleme gehabt.
                      Code:
                      -DIST_SUBDIRS = def c java php perl cs python pascal .
                      +DIST_SUBDIRS = def c java php perl cs .
                      und
                      Code:
                      -SUBDIRS = def c $(BUILDJAVA) php perl cs python pascal .
                      +SUBDIRS = def c $(BUILDJAVA) php perl cs .
                      Gruss, Othmar
                      EIB/KNX, VISU mit knxd + linknx + knxweb, Steuerbefehle via SMS und Email mit postfix + procmail

                      Kommentar


                        #12
                        danke für Dir.

                        Ich habe jetzt aber Blut geleckt und werde mich mal
                        etwas genauer mit dem Thema Linux software kompilierung befassen.
                        Ist so einer der letzden Wolken in meinem Linux universum.
                        Fange wohl gleich mal damit an zu erkunden was dieser patch überhaupt
                        macht.

                        Gruß

                        Wolfgang

                        Kommentar

                        Lädt...
                        X