2011-01-20 3 views
10

Mon objectif final est de compiler des outils sans fil pour mon ancien modem/routeur Actiontec afin de pouvoir le configurer comme un pont sans fil vers Ethernet. Actuellement, ses fonctions sans fil sont (apparemment) contrôlées par le même binaire qui gère la plus grande partie de l'interface Web, mais il semble qu'elles utilisaient les outils sans fil de la bibliothèque en interne pour au moins une partie des fonctionnalités.Compilation croisée pour le routeur MIPS de x86

Je n'ai jamais croisé compilé pour une architecture CPU différente auparavant et je ne sais pas comment identifier complètement ce que je dois faire. J'essaie d'utiliser uClibc car il semble être utilisé dans le reste du système, mais je ne suis pas sûr de savoir comment configurer buildroot pour l'environnement des modems. J'ai fait un best guess à ce que la configuration devrait être basée sur les informations de proc ci-dessous, mais quelque chose de mal puisque une simple application C qui ne renvoie que 0 compilé avec elle échoue à fonctionner correctement.

# cat /proc/version 
Linux version 2.4.17_mvl21-malta-mips_fp_le ([email protected]) (gcc version 2.95.3 20010315 (release/MontaVista)) #1 Thu Apr 21 18:04:37 PDT 2005 
# cat /proc/cpuinfo 
processor    : 0 
cpu model    : MIPS 4KEc V4.8 
BogoMIPS    : 149.91 
wait instruction  : no 
microsecond timers  : yes 
extra interrupt vector : yes 
hardware watchpoint  : yes 
VCED exceptions   : not available 
VCEI exceptions   : not available 
+0

fichier localiser les applications binaires sur le système de MIPS et exec ** ** sur elle et de partager la sortie avec nous – karlphillip

+0

D'accord, la sortie de fichier pour un fichier exécutable du système est la suivante: ELF 32-bit exécutable LSB , MIPS, MIPS-I version 1 (SYSV), lié dynamiquement (utilise libs partagées), dépouillé Merci pour toute votre aide jusqu'à présent. – sagenite

+0

duplication possible de [Existe-t-il un moyen d'utiliser gcc pour convertir C en MIPS?] (Http://stackoverflow.com/questions/4175450/is-there-a-way-to-use-gcc-to-convert- c-to-mips) – user2284570

Répondre

9

Vous avez raison, vous avez besoin d'un MIPS toolchain de contre-compiler votre application et Buildroot appropriée peut le faire. Mais vous devrez peut-être tordre menuconfig options de buildroot. En fonction de la sortie de file, vos options peuvent changer. Sur mon système, des applications binaires informent les éléments suivants:

ELF 32-bit MSB executable, MIPS, MIPS32 rel2 version 1 (SYSV)

Ce sont les options que j'ai permis pour mon menuconfig de Buildroot:

Target Architecture (mips) ---> 
Target Architecture Variant (mips 32r2) --->                
Target ABI (o32) --->                     
Target options --->                      
Build options ---> 
    (/opt/cross-mips-buildroot) Toolchain and header file location?                     
Toolchain --->   
    Toolchain type (Buildroot toolchain) ---> 
    Kernel Headers (Linux 2.6.34.x kernel headers) ---> 
    uClibc C library Version (uClibc 0.9.31.x) ---> 
    [*] Build/install a shared libgcc? 
    [*] Enable compiler tls support  
    [*] Build gdb debugger for the Target 
    [*] Build gdb server for the Target 
    [*] Build gdb for the Host 
     GDB debugger Version (gdb 6.8) ---> 
    [*] Enable large file (files > 2 GB) support? 
    [*] Enable WCHAR support 
    [*] Use software floating point by default 
    [*] Enable stack protection support 
    [*] Build/install c++ compiler and libstdc++? 
    [*] Include target utils in cross toolchain 
Package Selection for the target ---> 
    [*] BusyBox 
    [*] Run BusyBox's own full installation 
    Libraries ---> 
     Networking ---> 
      [*] libcurl 
     Text and terminal handling ---> 
      [*] icu 
      -*- ncurses  
Target filesystem options --->                   
Bootloaders --->                       
Kernel ---> 

Le toolchain est lui-même installé à /opt/cross mips-buildroot. Vous pouvez trouver le compilateur et d'autres outils sur /opt/cross-mips-buildroot/usr/bin/

Essayez de compiler simple Bonjour tout le monde application et voir si vous pouvez l'exécuter à l'intérieur du système de MIPS.

Remarque: cette configuration ne générera pas de compilateur C++. Si vous en avez besoin, vous pouvez grep LIBSTDCPP .config et vérifier si elle est activée ou non et la changer pour vos goûts. Puis make menuconfig pour y arriver.

+0

@ nightfly19 Vous voudrez probablement changer la * Variant d'Architecture Cible * puisque la vôtre est la version 1, pas 2. – karlphillip

+1

Merci !! Vous avez fourni toute l'aide dont j'avais besoin pour faire fonctionner la chaîne d'outils.Ma configuration s'est avérée être peu endian aussi bien pour n'importe qui suivant cette question avec une situation semblable aussi, ainsi l'architecture a dû être mipsel. – sagenite