Probleme beim Compilieren von vbusdecode

the.neon

Neuer User
Mitglied seit
16 Mai 2006
Beiträge
83
Punkte für Reaktionen
0
Punkte
0
Hallo zusammen ,

möchte gerne das Programm vbusdecode für Freetz compilieren.

http://code.google.com/p/vbusdecode/


Mein Compile Command
~/freetz-trunk/toolchain/target/bin/mips-linux-g++ vbusdecode.cpp -o vbusdecode -static

= ohne Error

Auf der Fritzbox 7220 :
root@fritz:/var/mod/root# ./vbusdecode
./vbusdecode: line 2: syntax error: unexpected word (expecting ")")


was mach ich falsch ?

Gruß
 
Mein Compile Command
~/freetz-trunk/toolchain/target/bin/mips-linux-g++ vbusdecode.cpp -o vbusdecode -static

Auf der Fritzbox 7220 :
root@fritz:/var/mod/root# ./vbusdecode
./vbusdecode: line 2: syntax error: unexpected word (expecting ")")
Deine Box (7220) ist LE? Hast Du mit mips-linux, das binary für L-E oder für BE-Boxen kompiliert? Wie hast Du das binary auf deine Box übertragen? Im binär-Modus?
 
L-E ?

ist ne 7220 V2

übertrage mit winscp.

Gruss
 
g++ ist der richtig laut der vbusdecode Seite ... wie finde ich das LE raus ?
 
... wie finde ich das LE raus ?
Die 72** wird LE sein. g++ gibt es für mips und für mipsel.:
Code:
./toolchain/build/mipsel_gcc-4.5.3_uClibc-0.9.31.1/mipsel-linux-uclibc/mipsel-linux-uclibc/bin/g++
./toolchain/build/mips_gcc-4.5.3_uClibc-0.9.32.1/mips-linux-uclibc/bin/mips-linux-g++
Versuch mal mit dem g++ für mipsel.
 
Ansonsten kann sowas passieren, wenn WinSCP im Textmodus ein Binary kopiert.

Gruß
Oliver
 
... wie finde ich das LE raus ?
Im Internet gibt es source code, mit dem Du ein statisch gelinktes binary für deine Box (... mit dem richtigen compiler! ;-) ) compilieren kannst, um die endianess (LE oder BE) deiner Box zu bestimmen ;-) . Z. B.:
Code:
root@fritz:/var/media/ftp/uStor01/archiv# ./endian
Endian (LE=1, BE=0): 1
Code:
:~/myfreetz/freetz8868/trunk> ./toolchain/build/mipsel_gcc-4.5.3_uClibc-0.9.31.1/mipsel-linux-uclibc/bin/mipsel-linux-uclibc-g++ -o endian endian.cpp -lm -lstdc++ -static
Code:
/* endian.cpp */
#include <stdio.h>
int main(int argc, char *argv[])
{
union probe{
unsigned int num;
unsigned char bytes[sizeof(unsigned int)];
};
probe p = { 1U };
bool little_endian = (p.bytes[0] == 1U);
printf("Endian (LE=1, BE=0): %d\n", p.bytes[0]);
return 0;
}
 
danke für eurer tipps

jetzt geht das programm zumindest zum starten ...

freetz@freetz-linux:~/freetz-trunk/solar2$ ~/freetz-trunk/toolchain/build/mipsel_gcc-4.5.3_uClibc-0.9.31.1/mipsel-linux-uclibc/bin/mipsel-linux-g++ -lstdc++ -static vbusdecode.cpp -o vbusdecode


was jetzt kommt ist dieser Fehler hat das was damit zu tun das die stdc++ nicht vorhanden ist ?
terminate called after throwing an instance of 'std::logic_error'
what(): basic_string::_S_construct NULL not valid
Aborted

denke das problem ist das :

string formatter = strtok (NULL, ",");
 
Zuletzt bearbeitet:
denke das problem ist das :

string formatter = strtok (NULL, ",");
Versuch es in der source-code-Datei, nach der Zeile "#include <iostream>", mit folgendem Eintrag:
Code:
#include <cstring>
#include <cstdlib>
 
Mit den Ergänzungen im source code, funktioniert das statisch gelinkte binary, auf meiner 7240:
Code:
root@fritz:/var/media/ftp/uStor01/archiv# strace ./vbusdecode 1
execve("./vbusdecode", ["./vbusdecode", "1"], [/* 216 vars */]) = 0
ioctl(0, TIOCNXCL, {B38400 opost isig icanon echo ...}) = 0
ioctl(1, TIOCNXCL, {B38400 opost isig icanon echo ...}) = 0
brk(0)                                  = 0x494e64
brk(0x495e64)                           = 0x495e64
brk(0x496000)                           = 0x496000
read(0,
Code:
root@fritz:/var/media/ftp/uStor01/archiv# strace ./vbusdecode
execve("./vbusdecode", ["./vbusdecode"], [/* 216 vars */]) = 0
ioctl(0, TIOCNXCL, {B38400 opost isig icanon echo ...}) = 0
ioctl(1, TIOCNXCL, {B38400 opost isig icanon echo ...}) = 0
brk(0)                                  = 0x494e64
brk(0x495e64)                           = 0x495e64
brk(0x496000)                           = 0x496000
write(1, "usage: arguments [-c] [-f filena"..., 55usage: arguments [-c] [-f filename] [-c count]  fields
) = 55
exit(0)
 
Im Internet gibt es source code, mit dem Du ein statisch gelinktes binary für deine Box (... mit dem richtigen compiler! ;-) ) compilieren kannst, um die endianess (LE oder BE) deiner Box zu bestimmen ;-)
Mit anderen Worten, nachdem man festgestellt hat, welche endianess die Box hat, um den richtigen Compiler zu finden, kann man das Programm laufen lassen, damit es einem das sagt, was man schon wissen muss, um das Programm überhaupt erstellen zu können. Was genau soll das bringen?

was jetzt kommt ist dieser Fehler hat das was damit zu tun das die stdc++ nicht vorhanden ist ?
terminate called after throwing an instance of 'std::logic_error'
what(): basic_string::_S_construct NULL not valid
Aborted

denke das problem ist das :

string formatter = strtok (NULL, ",");
Dass die libstdc++ fehlt kann icht sein, die wurde ja statisch dazu gelinkt.
Gibt es einen Grund für Deine Vermutung, dass es mit der Zeile mit strtok zusammen hängt?
 
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.