Vraag Cross-compilatie voor MIPS-router van x86


Mijn einddoel is om draadloze tools voor mijn oude Actiontec-modem / router te compileren, zodat ik deze kan configureren als een draadloze naar een ethernet-bridge. Op dit moment worden draadloze functies (schijnbaar) bestuurd door hetzelfde binaire apparaat dat de meeste van de webinterface beheert, maar het lijkt erop dat ze de bibliotheek gebruiken voor draadloze tools intern voor ten minste een deel van de functionaliteit.

Ik heb nooit eerder gecompileerd voor een andere CPU-architectuur en weet niet zeker hoe ik volledig kan identificeren wat ik moet doen. Ik probeer uClibc te gebruiken omdat het lijkt te worden gebruikt in de rest van het systeem, maar ik weet niet zeker hoe buildroot moet worden geconfigureerd voor de modems-omgeving. ik heb een ... gemaakt beste gok op wat de configuratie zou moeten zijn gebaseerd op de informatie van proc hieronder, maar iets klopt niet, omdat een eenvoudige C-toepassing die alleen 0 retourneert die er mee is gecompileerd, niet correct werkt.

# cat /proc/version 
Linux version 2.4.17_mvl21-malta-mips_fp_le (root@localhost.localdomain) (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

10
2018-01-20 19:37


oorsprong


antwoorden:


Je hebt gelijk, je hebt een goede nodig mips toolchain om uw toepassing te cross-compileren en Buildroot kan dat doen. Maar misschien moet je buildroot's aanpassen menuconfig opties. Afhankelijk van de uitvoer van file, uw opties kunnen veranderen. Op mijn systeem informeren binaire apps het volgende:

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

Dit zijn de opties die ik heb ingeschakeld voor mijn Buildroot's menuconfig:

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  --->

De toolchain zelf is geïnstalleerd op / Opt / cross-mips-buildroot. Je kunt de compiler en andere hulpmiddelen vinden / Opt / cross-mips-buildroot / usr / bin /

Probeer een simpele compilatie te maken Hallo Wereld applicatie en kijk of je het in het mips-systeem kunt gebruiken.

Notitie: deze configuratie zal geen C ++ -compiler bouwen. Als je het nodig hebt, kan dat grep LIBSTDCPP .config en controleer of het is ingeschakeld of niet en verander het in uw likes. Dan make menuconfig om het te laten gebeuren.


9
2018-01-20 20:07



Uitchecken:

http://www.kegel.com/crosstool/

Het is de gezaghebbende site over cross-compileren onder GCC.


1
2018-01-20 21:17