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:

RalfFriedl

IPPF-Urgestein
Mitglied seit
22 Apr 2007
Beiträge
12,343
Punkte für Reaktionen
1
Punkte
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.
 

Tester1337

Neuer User
Mitglied seit
23 Sep 2011
Beiträge
26
Punkte für Reaktionen
0
Punkte
0
Welchen davon nehme ich?
Ich habe hier folgende:
g++
g++-4.4
gcc
gcc-4.3
gcc-4.4

Gebe ich folgendes ein:
[email protected]:~$ 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
 

RalfFriedl

IPPF-Urgestein
Mitglied seit
22 Apr 2007
Beiträge
12,343
Punkte für Reaktionen
1
Punkte
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.
 

Tester1337

Neuer User
Mitglied seit
23 Sep 2011
Beiträge
26
Punkte für Reaktionen
0
Punkte
0
Den habe ich zwischenzeitlich auch gefunden....

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

[email protected]:/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
 

Tester1337

Neuer User
Mitglied seit
23 Sep 2011
Beiträge
26
Punkte für Reaktionen
0
Punkte
0
Habe nun das ganze auch mit statischem Linken versucht.

Exakt dasselbe?
 

Chatty

Aktives Mitglied
Mitglied seit
13 Mrz 2006
Beiträge
1,747
Punkte für Reaktionen
29
Punkte
48
@Tester1337: Bitte mal im Titel am Anfang "Compiler" ergänzen... denn es gibt auch einen WLAN-"Standard" g++.
 

Tester1337

Neuer User
Mitglied seit
23 Sep 2011
Beiträge
26
Punkte für Reaktionen
0
Punkte
0
Dann versuche es mal mit toolchain/target/bin/mipsel-linux-g++-uc
Mir fehlt gerade auf ich habe gar kein Mipsel und dieses

[email protected]:~/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?
 

Tester1337

Neuer User
Mitglied seit
23 Sep 2011
Beiträge
26
Punkte für Reaktionen
0
Punkte
0
Habe gerade im Tracker herausgefunden, dass es mipsel nicht mehr gibt.

Die 7390 verwendet Big Endian
 
Zuletzt bearbeitet:

olistudent

IPPF-Urgestein
Mitglied seit
19 Okt 2004
Beiträge
14,779
Punkte für Reaktionen
10
Punkte
38
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
 

Tester1337

Neuer User
Mitglied seit
23 Sep 2011
Beiträge
26
Punkte für Reaktionen
0
Punkte
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?
 

Tester1337

Neuer User
Mitglied seit
23 Sep 2011
Beiträge
26
Punkte für Reaktionen
0
Punkte
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
 

Tester1337

Neuer User
Mitglied seit
23 Sep 2011
Beiträge
26
Punkte für Reaktionen
0
Punkte
0
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.
 

RalfFriedl

IPPF-Urgestein
Mitglied seit
22 Apr 2007
Beiträge
12,343
Punkte für Reaktionen
1
Punkte
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?
 

Tester1337

Neuer User
Mitglied seit
23 Sep 2011
Beiträge
26
Punkte für Reaktionen
0
Punkte
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....
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
 

RalfFriedl

IPPF-Urgestein
Mitglied seit
22 Apr 2007
Beiträge
12,343
Punkte für Reaktionen
1
Punkte
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.