.titleBar { margin-bottom: 5px!important; }

Compiler g++ für 7390

Dieses Thema im Forum "Freetz" wurde erstellt von Tester1337, 5 Okt. 2011.

  1. Tester1337

    Tester1337 Neuer User

    Registriert seit:
    23 Sep. 2011
    Beiträge:
    26
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    #1 Tester1337, 5 Okt. 2011
    Zuletzt bearbeitet: 5 Okt. 2011
    Hallo zusammen,

    ich möchte gerne für die Fritzbox ein paar Programmchen kompilieren.

    soweit ich weiß benötigt man hierzu einen speziellen g++ den man selbst kompilieren muss, da C ja plattformspezifisch ist. Könnte mir kurz Jemand mitteilen wie ich den baue?

    Versuche mich am Quellcode unter meiner Linux Freetz Distri.

    Vielen Dank
     
  2. RalfFriedl

    RalfFriedl IPPF-Urgestein

    Registriert seit:
    22 Apr. 2007
    Beiträge:
    12,343
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Wenn Du Freetz verwendest. dann nimm den C++ Compiler, der bei Freetz dabei ist.

    Wenn Du den C++ Compiler selbst erstellen willst, hat die Frage mit Freetz nichts zu tun.
     
  3. Tester1337

    Tester1337 Neuer User

    Registriert seit:
    23 Sep. 2011
    Beiträge:
    26
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Welchen davon nehme ich?
    Ich habe hier folgende:
    g++
    g++-4.4
    gcc
    gcc-4.3
    gcc-4.4

    Gebe ich folgendes ein:
    freetz@freetz-linux:~$ g++ -o hello hello.c -march=mips24k
    hello.c:1: error: bad value (mips24k) for -march= switch
    hello.c:1: error: bad value (mips24k) for -mtune= switch

    Und das deutet wohl auf eine Architekur hin mit der g++ verbunden ist
     
  4. RalfFriedl

    RalfFriedl IPPF-Urgestein

    Registriert seit:
    22 Apr. 2007
    Beiträge:
    12,343
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Wenn Du Freetz nutzt, nimmst Du toolchain/target/bin/mipsel-linux-g++

    Wenn Du selbst einen erstellen willst, musst Du herausfinden, wie das geht.

    Die auf dem System installierten Compiler kannst DU nicht verwenden.
     
  5. Tester1337

    Tester1337 Neuer User

    Registriert seit:
    23 Sep. 2011
    Beiträge:
    26
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Den habe ich zwischenzeitlich auch gefunden....

    Allerdings erhalte ich auf der fritzbox einen Speicherzugriffsfehler bei einem Hello World Beispiel

    root@fritz:/var/media/ftp# ./hello
    Segmentation fault

    // C++ Hello World

    #include <iostream>

    using namespace std;

    int main()
    {
    cout << "Hello World!" << endl;

    }

    ./mips-linux-g++ /home/freetz/hello.c -o /home/freetz/hello
     
  6. Tester1337

    Tester1337 Neuer User

    Registriert seit:
    23 Sep. 2011
    Beiträge:
    26
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Habe nun das ganze auch mit statischem Linken versucht.

    Exakt dasselbe?
     
  7. RalfFriedl

    RalfFriedl IPPF-Urgestein

    Registriert seit:
    22 Apr. 2007
    Beiträge:
    12,343
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Dann versuche es mal mit toolchain/target/bin/mipsel-linux-g++-uc
     
  8. Chatty

    Chatty Aktives Mitglied

    Registriert seit:
    13 März 2006
    Beiträge:
    1,666
    Zustimmungen:
    20
    Punkte für Erfolge:
    38
    @Tester1337: Bitte mal im Titel am Anfang "Compiler" ergänzen... denn es gibt auch einen WLAN-"Standard" g++.
     
  9. Tester1337

    Tester1337 Neuer User

    Registriert seit:
    23 Sep. 2011
    Beiträge:
    26
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Mir fehlt gerade auf ich habe gar kein Mipsel und dieses

    freetz@freetz-linux:~/freetz-trunk/toolchain/target/bin$ ./mips-linux-uclibc-g++-uc
    exec: 17: mips-linux-uclibc-g++: not found

    Geht generell nicht. Kann doch nicht sein das ich der einzige mit diesem Problem bin?
     
  10. Tester1337

    Tester1337 Neuer User

    Registriert seit:
    23 Sep. 2011
    Beiträge:
    26
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    #10 Tester1337, 5 Okt. 2011
    Zuletzt bearbeitet: 6 Okt. 2011
    Habe gerade im Tracker herausgefunden, dass es mipsel nicht mehr gibt.

    Die 7390 verwendet Big Endian
     
  11. olistudent

    olistudent IPPF-Urgestein

    Registriert seit:
    19 Okt. 2004
    Beiträge:
    14,761
    Zustimmungen:
    5
    Punkte für Erfolge:
    38
    Beruf:
    Softwareentwickler
    Ort:
    Kaiserslautern
    mips ist big endian. Little endian ist mipsel.

    Es kann sein, dass der g++-uc (uclibc++) wrapper die anderen Binaries im Pfad sucht. Den hast du wohl nicht gesetzt?

    Probier mal bitte, ob du die Dateien statisch linken kannst. Es könnte sein, dass unsere PIC-Erweiterung ein Ausführen mit der AVM uclibc nicht zulässt. Du verwendest doch kein Freetz auf der Box oder?

    Gruß
    Oliver
     
  12. Tester1337

    Tester1337 Neuer User

    Registriert seit:
    23 Sep. 2011
    Beiträge:
    26
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo Oliver,

    mir ist nicht ganz klar was ich dort für einen Pfad setzen muss bzw. welche Umgebungsvars ich benötige (evtl. hilft mir die Forensuche oder Master Google)

    Ich betreibe die freetz in einer Virtualbox (OVA hatte in meiner VMWare nicht funktioniert) in seiner unverblümten Form und als freeze verwende ich die Trunkrev 7662. Da ich erst dort eine Unterstützung für meine 7390 finden konnte.

    Die Revision habe ich mir damals auch ausgesucht da ich mit dem aktuellen Head Probleme beim Bauen hatte.

    Mir ist nicht ganz klar was ich mit dem Wrapper anstellen muss damit dieser läuft? Deinem Wortlaut nach fehlen möglicherweise Umgebungsvars? Könntest Du mir dies bitte etwas erläutern? Evtl. finde ich via Google und Boardsuche etwas?

    Ach ja ich habe statisches als auch dynamisches Linken versucht, der einzige Unterschied ist:

    - dyn: segmentation fault
    - stat: illegal instruction

    Shrinken hab ich zwar auch mal gemacht aber prinzipiell ist das eh nur für Speicherplatzeinsparung.

    Danke für Deine Unterstützung

    P. S.: Das Forum frisst ab und zu meine Postings ohne diese einzutragen?
     
  13. Tester1337

    Tester1337 Neuer User

    Registriert seit:
    23 Sep. 2011
    Beiträge:
    26
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hi,
    habe nun dieses Wrapper Script angepasst indem ich in der betreffenden Zeile als Prefix ./ vorangestellt habe jetzt compiliert er meinen sourcecode zwar auch aber liefert mir einen Bus Error?

    Der build des Toolchain schlägt so natürlich fehl....Ich versuche mal die Änderungen der toolchain nachzuvollziehen evtl. hilft das
     
  14. RalfFriedl

    RalfFriedl IPPF-Urgestein

    Registriert seit:
    22 Apr. 2007
    Beiträge:
    12,343
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Der Build welcher Toolchain schlägt so natürlich fehl?
     
  15. Tester1337

    Tester1337 Neuer User

    Registriert seit:
    23 Sep. 2011
    Beiträge:
    26
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Trunkrev 7662 sowas schreibe ich nicht zum Spaß hin ;)

    Der aktuelle Head geht bei mir nicht, da sfk163.zip wieso auch immer Md5 mismatch liefert

    Der 1.2 Freetz Release kann ich auch nicht bauen, da ich dieses erforderliche Image (84.04.91) auf keinem AVM Server finde und aus der recovery.exe kann ich das image nicht rausziehen und selbst reinkopieren.
     
  16. RalfFriedl

    RalfFriedl IPPF-Urgestein

    Registriert seit:
    22 Apr. 2007
    Beiträge:
    12,343
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ich habe auch nicht nach der Trunk Version gefragt, sondern nach der Toolchain. Die Toolchain wird normalerweise fertig herunter geladen, es sei denn, man hat ausgewählt, dass man sie selbst erstellen will. Bisher gab es aber keinen Hinweis darauf, dass Du die Toolchain selbst erstellen wolltest, und erst Recht nicht dass es dabei Probleme gegeben hätte.

    Folglich: Welche Toolchain willst Du erstellen, und was funktioniert dabei nicht?
     
  17. Tester1337

    Tester1337 Neuer User

    Registriert seit:
    23 Sep. 2011
    Beiträge:
    26
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ich habe die Toolchain die mit der Trunk Revision 7662 gebaut/beiliegt. Welche Version das ist geht nicht aus dem Repository lokal hervor.

    Und ich baue diese Toolchain auch nicht selbst! Was das Script alles macht weiß ich natürlich auch nicht

    Und da dies offentsichtlich nicht funktioniert, teste ich Alternative Softwarestände die eine möglicherweise funktionierende Toolchain mitliefern mit welcher ich sowohl mein hello world kompilieren als auch auf dem Zielsystem ausführen kann

    Ich hoffe das ist jetzt wirklich mal klar.....

    Aber nochmal in Kürze:
    Ziel: Lauffähiges c++ Compilat auf dem Zielsystem Fritzbox 7390 erfolgreich ausführen können

    Wie? Ist mir im Endeffekt egal.

    Falls ich noch rausfinde welche Toolchain Version mit der Revision mitgeliefert wird liefere ich das nach
     
  18. RalfFriedl

    RalfFriedl IPPF-Urgestein

    Registriert seit:
    22 Apr. 2007
    Beiträge:
    12,343
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Also schlägt kein Build der Toolchain fehl, weil Du gar keine Toolchain baust.

    Mit
    Code:
    PATH=$PATH:toolchain/target/bin toolchain/target/bin/mips-linux-g++-uc -static -o test-cpp test-cpp.cpp
    
    Kann ich Dein Testprogramm übersetzen und auf einer 7320 ausführen.

    Mit
    Code:
    toolchain/target/bin/mips-linux-g++ -static -o test-cpp test-cpp.cpp
    
    übrigens auch.

    Hänge doch mal hier das Programm an, das bei Dir herauskommt.
     
  19. Tester1337

    Tester1337 Neuer User

    Registriert seit:
    23 Sep. 2011
    Beiträge:
    26
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hey,

    hab mal eine statische gebundene hochgeladen (nicht gestrippt)

    Daher mit gzip gepackt....

    Den Anhang hello.gz betrachten

    Bin gespannt ob die bei dir geht
     
  20. RalfFriedl

    RalfFriedl IPPF-Urgestein

    Registriert seit:
    22 Apr. 2007
    Beiträge:
    12,343
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Bei mir sagt das Programm "Hello World!".

    Mal eine andere Frage, wie bringst Du denn das Programm auf die Box?