[Ninux-Wireless] MIPSEL: Differenze tra un ELF prodotto su Debian MIPSEL e uno su OpenWRT MIPSEL
darkman
darkman a darkman.it
Ven 6 Maggio 2011 17:11:16 CEST
Crosscompila usando la toolchain fornita con openwrt sdk.
Se hai problemi con le librerie compila staticamente.
----------------------------------------------------------------------
Da: wireless-bounces a ml.ninux.org
A: "ninux - tuscolomesh" wireless-ml a ninux.org
Cc:
Data Thu, 5 May 2011 20:35:06 +0200
Oggetto: [Ninux-Wireless] MIPSEL: Differenze tra un ELF prodotto su Debian MIPSEL e uno su OpenWRT MIPSEL
> Salve ragazzi, vorrei sottoporvi una questione confidando nella vostra
> esperienza con OpenWRT e embedded.
>
> Vorrei produrre un eseguibile per un router che monta openwrt backfire.
> Tale router è un Omnima ADM5120.
>
> Per compilare il mio programma ho usato una debian installata su un
> sistema mipsel emulato con qemu-system-mipsel.
> Ho seguito le informazioni segnalate qui:
> http://www.aurel32.net/info/debian_mips_qemu.php
>
> Il problema è che un eseguibile che funziona nella macchina emulata
> debian non funziona nel router e viceversa.
> Gli eseguibili nel sistema debian (sia quelli forniti dal sistema sia
> quello che compilo io) sono diversi dagli eseguibili nel sistema
> openwrt del mio router.
> Più in basso riporto le informazioni che ho potuto reperire su queste
> differenze usando "file" e "readelf".
>
> In particolare mi salta all'occhio la differenza nel ELF header della
> OS/ABI Version: UNIX - System V versione 0 e versione 1.
> Cosa è questa cosa della versione 1 che vedo solo in OpenWRT?
>
> Quello che vorrei fare è ottenere un ambiente di compilazione comodo
> da usare (come una debian virtualizzata) per produrre eseguibili che
> funzionino nel router.
> E' possibile?
>
> Un altro punto. L'eseguibile che vado a produrre ha bisogno di diverse
> shared libraries.
> Queste sono semplici da reperire nei pacchetti debian, mentre
> difficili da trovare in pacchetti openwrt.
> Ovviamente estrarre i files dai diversi formati (deb o ipk) è banale,
> ma anche in questo caso un passaggio con readelf mi dice che il
> contenuto è incompatibile.
>
>
>
>
>
> Ho portato sulla mia macchina (ubuntu) un file prodotto nella debian
> virtualizzata e uno di quelli nella distribuzione openwrt del router.
> Li ho esaminati con "file" e "readelf".
>
> Il comando "file" dice:
> 1)debian
> $ file exe_a
> exe_a: ELF 32-bit LSB executable, MIPS, MIPS-I version 1 (SYSV),
> dynamically linked (uses shared libs), for GNU/Linux 2.6.18, with
> unknown capability 0xf41 = 0x756e6700, not stripped
> 2)openwrt
> $ file opkg
> opkg: ELF 32-bit LSB executable, MIPS, MIPS32 version 1, dynamically
> linked (uses shared libs), corrupted section header size
>
> Il comando "readelf" dice:
> 1)debian
> $ readelf -h exe_a
> ELF Header:
> Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
> Class: ELF32
> Data: 2's complement, little endian
> Version: 1 (current)
> OS/ABI: UNIX - System V
> ABI Version: 0
> Type: EXEC (Executable file)
> Machine: MIPS R3000
> Version: 0x1
> Entry point address: 0x403680
> Start of program headers: 52 (bytes into file)
> Start of section headers: 338016 (bytes into file)
> Flags: 0x1007, noreorder, pic, cpic, o32, mips1
> Size of this header: 52 (bytes)
> Size of program headers: 32 (bytes)
> Number of program headers: 9
> Size of section headers: 40 (bytes)
> Number of section headers: 33
> Section header string table index: 30
> 2)openwrt
> $ readelf -h opkg
> ELF Header:
> Magic: 7f 45 4c 46 01 01 01 00 01 00 00 00 00 00 00 00
> Class: ELF32
> Data: 2's complement, little endian
> Version: 1 (current)
> OS/ABI: UNIX - System V
> ABI Version: 1
> Type: EXEC (Executable file)
> Machine: MIPS R3000
> Version: 0x1
> Entry point address: 0x4020b0
> Start of program headers: 52 (bytes into file)
> Start of section headers: 0 (bytes into file)
> Flags: 0x50001005, noreorder, cpic, o32, mips32
> Size of this header: 52 (bytes)
> Size of program headers: 32 (bytes)
> Number of program headers: 8
> Size of section headers: 0 (bytes)
> Number of section headers: 0
> Section header string table index: 0
> _______________________________________________
> Wireless mailing list
> Wireless a ml.ninux.org
> http://ml.ninux.org/mailman/listinfo/wireless
>
Maggiori informazioni sulla lista
Wireless