2017-07-21 6 views
0

J'ai mis en place un compilateur croisé en utilisant buildroot.
Le périphérique cible exécute Linux et dispose d'un processeur MIPS (il s'agit d'un Dreambox dm500hd).
configuration Buildroot (seulement les choses que j'ai changé):Le compilateur croisé pour MIPS ne semble pas créer de programmes valides

  • Configuration cible
    • Architecture: MIPS (little endian)
    • variante Architecture: MIPS32 Générique
  • Toolchain configuration
    • [*] Activer C++ Su PPort
    • [*] Activer le support lien temps optimisation compilateur

J'ai suivi la procédure d'installation et buildroot rend le compilateur avec succès (mips-linux-gcc et g ++).
Bonjour fichier du monde (test mips.cpp)

#include <iostream> 

using namespace std; 

int main() { 
    cout << "hello world"; 
    return 0; 
} 

Je peux compiler Bonjour tout le monde, mais quand je le lance sur le dispositif cible une erreur est renvoyée:

dm500hd:~$ ./test-mips 
./test-mips: line 1: [email protected]▒�P4: not found 
./test-mips: line 1: syntax error: unexpected word (expecting ")") 

Les caractères étranges apparaissent seulement si je construis le compilateur pour little-endian: l'erreur pour les programmes compilés avec big-endian est la même, mais avec des espaces au lieu de ▒�.
J'ai essayé à la fois le petit boutiste et le gros boutiste mais le problème est le même. Ai-je fait quelque chose de mal en configurant buildroot alors?
Note: cat /proc/cpuinfo jeu moi ce résultat. Dois-je changer la variante d'architecture?

system type    : BCM7413B1 STB platform 
processor    : 0 
cpu model    : Brcm4380 V4.4 FPU V0.1 
BogoMIPS    : 403.45 
cpu MHz     : 405.010 
wait instruction  : yes 
microsecond timers  : yes 
tlb_entries    : 32 
extra interrupt vector : yes 
hardware watchpoint  : no 
ASEs implemented  : mips16 
shadow register sets : 1 
kscratch registers  : 0 
core     : 0 
VCED exceptions   : not available 
VCEI exceptions   : not available 

processor    : 1 
cpu model    : Brcm4380 V4.4 FPU V0.1 
BogoMIPS    : 403.45 
cpu MHz     : 405.010 
wait instruction  : yes 
microsecond timers  : yes 
tlb_entries    : 32 
extra interrupt vector : yes 
hardware watchpoint  : no 
ASEs implemented  : mips16 
shadow register sets : 1 
kscratch registers  : 0 
core     : 0 
VCED exceptions   : not available 
VCEI exceptions   : not available 

Répondre

2

Exécutez-vous sur votre système cible le système de fichiers racine généré par Buildroot? Ou vous venez de construire votre programme avec la chaîne d'outils Buildroot, et l'avez déplacé vers votre système de fichiers existant sur la cible?

Dans ce dernier cas, ne vous attendez pas à ce que cela fonctionne correctement. Vous devez vous assurer que votre programme est compatible ABI avec la réinitialisation du système qui existe déjà sur votre système cible.

+0

Je ne sais vraiment pas si c'est compatible, je vais essayer d'installer le fs généré et voir si cela fonctionne de cette façon –

+0

Merci, l'installation du système de fichiers généré a résolu le problème. Apparemment, le logiciel préinstallé n'est pas compatible ABI avec les programmes compilés à l'aide de gcc/g ++ de buildroot. –