Compiler g++ für 7390

Tester1337

Neuer User
Mitglied seit
23 Sep 2011
Beiträge
26
Punkte für Reaktionen
0
Punkte
0
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
 
Zuletzt bearbeitet:
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.
 
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
 
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.
 
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
 
Habe nun das ganze auch mit statischem Linken versucht.

Exakt dasselbe?
 
@Tester1337: Bitte mal im Titel am Anfang "Compiler" ergänzen... denn es gibt auch einen WLAN-"Standard" g++.
 
Dann versuche es mal mit toolchain/target/bin/mipsel-linux-g++-uc
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?
 
Habe gerade im Tracker herausgefunden, dass es mipsel nicht mehr gibt.

Die 7390 verwendet Big Endian
 
Zuletzt bearbeitet:
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
 
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?
 
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
 
Der Build welcher Toolchain schlägt so natürlich fehl?

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.
 
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?
 
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....
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
 
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.
 

Zurzeit aktive Besucher

Statistik des Forums

Themen
244,840
Beiträge
2,219,266
Mitglieder
371,543
Neuestes Mitglied
Brainbanger
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.