[Problem] AVM compatible toolchain

theMirk

Neuer User
Mitglied seit
20 Feb 2013
Beiträge
3
Punkte für Reaktionen
0
Punkte
0
Hallo!

Ich möchte für sowohl gefreetzte als auch für orginale 7170 ein eigenes C Programm kompilieren.
Das executable soll jedoch das selbe sein.

Mit dem "freetz"-toolchain .. läuft alles auf den gemoddeten 7170 wunderbar (1.2-stable)

Nun habe ich mir den trunk gezogen und die Option FREETZ_TARGET_TOOLCHAIN_AVM_COMPATIBLE aktiviert (Option ist nur im trunk verfügbar).
Diese soll laut Hilftetext genau meinem Wunsch entsprechen.
Ich hab mir mal den Code dazu angeguckt .. es wird nur die Option --with-mips-plt deaktiviert (gcc.mk)

Der Toolchain kompiliert ohne probleme durch.
Mein Programm kompiliert ohne probleme durch.

Beim starten (auf einer orginalen oder gemoddeten) kommt jedoch direkt ein segmentation fault.

Ich habe das ganze dann mal abgespeckt und auf ein HelloWorld redurziert. Ergebnis: Seg fault.

Weiß jemand was ich da falsch verstanden haben?

Danke,
 
Dein Vorgehen klingt erstmal gut. Kannst du probieren das Binary auf dem PC mit file, ldd und readelf (eventuell die mipsel-Version aus der Toolchain) zu untersuchen. Evtl. gibts da einen Hinweis.

Gruß
Oliver
 
Der Toolchain kompiliert ohne probleme durch.
Mein Programm kompiliert ohne probleme durch.

Beim starten (auf einer orginalen oder gemoddeten) kommt jedoch direkt ein segmentation fault.
Nur um sicherzustellen, dass ich Dich richtig verstanden haben. Du schaltest FREETZ_TARGET_TOOLCHAIN_AVM_COMPATIBLE aus, baust die Toolchain, übersetzt Dein Programm und das erstellte Binary startet weder auf einer originalen noch (was mich sehr wundert) auf einer gefreetzten Box? Hast Du das Binary richtig auf die Box / USB-Stick übertragen? Wenn ja, wie komplierst Du Dein Programm? Kann es sein, dass Du *.o, die mit einer Toolchain erstellt worden sind, dann mit einer anderen zusammenlinkst oder wird Dein Programm immer komplett neu übersetzt?
 
Hallo er13!

Folgendes Vorgehen:

1.) trunk über svn auschecken
2.) make menuconfig
3.) Toolchain selbst kompilieren (> 4GB) einschalten
4.) FREETZ_TARGET_TOOLCHAIN_AVM_COMPATIBLE aktivieren
5.) make toolchain
6.) PATH auf toolchain setzen
7.) mein Programm kompilieren (vorher natürlich make clean)

Das executable ist laut file für mips, und laut ldd dynamisch

Das executable erzeugt ein segmentation fault sowohl auf gemoddeten 7170 als auf orginalen.
Das executable übertrage ich via ftp im bin mode.

Wenn ich das ganze mit dem "normalen" Toolchain mache
läuft es auf gemoddeten 7170 wunderbar .. und auf orginalen stürzt es mit der meldung "can't handle reloc type 0x7e" ab.

Die Tips mit dem FREETZ_TARGET_TOOLCHAIN_AVM_COMPATIBLE hab ich aus dem Thread
http://www.ip-phone-forum.de/showthread.php?t=250466

Grüße
 
nur um den blöden Fehler auszuschließen: Im "menuconfig" hast du die 7170 gewählt? Nich dass da in Eifer des Gefechtes noch "7390" stand.

Zwei Dinge ansonsten:
Geht es, wenn du das Programm statisch linkst (-static)?
Du kannst auf dem Linux auch "qemu-mipsel" installieren, um zumindest statisch gelinkte Programme auszuführen
auf einem Ubuntu installieren z.B. mit: "sudo apt-get install qemu-user"

Code:
qemu-mipsel <pfad/zu/deinem/Proramm>
 
Hallo MaxMuster,

ja, wenn ich das executable mit -static statisch link läuft es sowohl auf gemoddeten als auch auf orginalen Boxen.
Habe ich jedoch nur mit dem "stable"-toolchain (welches ich nicht selbst kompiliere) gemacht.

Jedoch möchte ich das ja nicht. Dynmisches linken ist erste Wahl.

Grüße,
 
@theMirk: wenn Du ein einfaches HelloWorld-Programm mit der freetz-toolchain (erstellt mit FREETZ_TARGET_TOOLCHAIN_AVM_COMPATIBLE=y) kompilierst, läuft dieses auf einer gefreetzten Box? auf einer ungefreetzten Box? Kann es sein, dass Du bei Deinem Programm vergessen hast irgendwelche Libraries zu kopieren oder diese auf einem externen Medium liegen, welches grade nicht verfügbar ist?

Ich kann mir immer noch nur schwer vorstellen, dass das Einschalten von FREETZ_TARGET_TOOLCHAIN_AVM_COMPATIBLE dazu führt, dass es auf gar keiner Box läuft.
 
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.