[Problem] Hello World und "Bus error"

mora

Neuer User
Mitglied seit
4 Mrz 2012
Beiträge
3
Punkte für Reaktionen
0
Punkte
0
Hallo Leute
bin wirklich absolut blutiger Laie und will meine Fritzbox 7170 nutzen für zusätzliche Programme.
Habe bisher noch kein Freetz-Image auf die Box gemacht, wollte eben mit der Programmierung anfangen.
Habe mir dazu die Freetz-1.2-rc1 Toolchain runtergeladen und ein Hello World Programm "Hi" entsprechend dem Wiki kompiliert. File Hi zeigt mir auch, dass die Datei eine Mips Executable ist.
So, dann kopiere ich die Executable (mittels FileZilla) auf meine FB auf den MemoryStick, mit Telnet auf der Box wechsele ich in das entsprechende Verzeichnis /var/media/ftp/memorystick und starte das Programm mit "./Hi". Und was kommt? Immer diese Fehlermeldung : Bus error.
Habe schon einige Einstellungen des Compilers probiert, wie
-static für reingelinkte Lib
- Os für die Speichergrenzen auf 4 byte festzulegen
Was mache ich falsch?
Wohlgemerkt, die FBF ist noch "original", nicht mit Freetz.

Gruß
Hubert
 
Die Frage hat nichts mit Freetz zu tun.

Was genau tut die Option -Os Deiner Meinung nach?

Wie groß ist die Datei am PC, wie groß ist sie auf der Box?
 
Wenn du kein Freetz auf der Box hast, dann solltest du auf alle Fälle die Option "-static" verwenden. Ich weiß nicht, ob die selbst gebauten Programme zur uClibc von AVM kompatibel sind.

Poste doch bitte mal den kompletten Aufruf des Compilers und nicht nur Fetzen davon, sonst kann dir keiner helfen...

Gruß
Oliver
 
Moin
Mit der Option -static habe ich es auch schon probiert, aber gleiches Ergebnis.
Hier mein Aufruf:
/home/mora/freetz-1.2-rc1/toolchain/target/bin/mipsel-linux-gcc Hi.c -oHi.
entsprechend der Anleitung hier
http://www.wehavemorefun.de/fritzbox/index.php/Cross-Compile_Toolchain

@RalfFriedel: -Os soll doch die Speicherzugriffe an die 4-byte Grenzen alignen. Habe sonstwo gelesen, dass davon viele "Bus error" herkommen.
Und die Dateien sind gleich groß.

Vielen Dank für eure Hilfe,
Hubert
 
Wie groß genau sind denn beide Dateien? Wenn Du willst, kannst Du mal hier die Datei anhängen.

Meinst Du, die Erklärung zu -Os lautet "Erzeuge ein lauffähiges Programm (default: nicht lauffähiges Programm)"?
 
Hi

danke für die Frage nach der Größe der kopierten Executables, die sind doch tatsächlich auf der FB ein paar Byte kleiner.
Das hing an einer Einstellung vom FileZilla, der default transfer type stand auf "auto". Nach Änderung auf "binary" stimmten die Größen überein.

Ich habe die Exe einmal dynamisch und dann auch statisch gelinkt erstellt.
Die statisch gelinkte bringt mir nun die gewünschte, bei der dynamischen kriege ich jetzt einen "Segmentatioon fault", was glaube ich auch was mit Speicher zu tun hat.
Siehe
#
# ./Hi
Segmentation fault
# ./Hi_static
!!!Hello World!!!#

Doch warum? Habe doch dynamisch gegen die uClibc gelinkt wenn ich das so mache:
mora@vm-ubuntu1010:~/Devel/test$ /home/mora/freetz-1.2_rc1/toolchain/target/bin/mipsel-linux-gcc Hi.c -oHi

Meine dynamische Exe ist gegen ld-uClibc.0.9.29 gelinkt, habe ich mich "cat Hi" rausgefunden.
Diese lib existiert auch auf der Box, aber mit geringer anderer Größe (22628 bytes), statt 22536 im toolchain.
Kann das der Grund für das "Segmentation fault" sein?

Danke nochmals und Gruß
Hubert
 
Wenn Du kein Freetz verwendest, solltest Du sicherheitshalber static verwenden. Freetz hat auch einen erweiterten dynamischen Linker, der effizientere dynamische Programme ermöglicht. Wenn Du willst, kannst Du auch versuchen, den dynamischen Linker der AVM Firmware zu überschreiben. Einfacher aber ist es, Freetz zu verwenden oder statisch zu linken.
 

Neueste Beiträge

Statistik des Forums

Themen
244,858
Beiträge
2,219,637
Mitglieder
371,571
Neuestes Mitglied
FritzFunk
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.