/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
Cross compiling af "rinetd" til mip
Fra : Esben von Buchwald


Dato : 08-10-08 22:18

Jeg har en HDX 1000 medieafspiller (Networked media tank), baseret på
mipsel arkitekturen, med linux firmware.

Af forskellige grunde har jeg behov for at køre rinetd "internet
redirection server" http://www.boutell.com/rinetd/ på den

Jeg startede med at finde en debian pakke med rinetd til mipsel, det
fungerede ikke, den genkender ikke filen som eksekverbar.

Derfor ville jeg builde selv og fandt denne guide
http://www.networkedmediatank.com/showthread.php?tid=8342

Jeg har fået en virtual maskine med et environment op og køre, men
rinetd har ingen ./configure hvor jeg kan angive hvilken arkitektur den
skal builde til.
Derfor kiggede jeg i dens makefile og fandt linjen " gcc rinetd.o
match.o -o rinetd"

Jeg forsøgte herefter at kalde mipsel-linux compileren i stedet, hvilket
giver mig fejlen nedenfor...


Det lykkedes mig at kompilere helloworld.c til den og efterfølgende
afvikle den på min media player samt på min router (som også er mipsel
baseret) - men hvorfor vil den ikke kompilere rinetd?

Det skal siges at jeg er forholdsvis grøn i det med at lave cross
compiling etc. så jeg har sikkert lavet nogle begynderfejl?

debian/rinetd# mipsel-linux-gcc rinetd.c match.o -o rinetd
rinetd.c:176: warning: conflicting types for built-in function 'log'
rinetd.c: In function 'readConfiguration':
rinetd.c:544: warning: comparison is always false due to limited range
of data type
rinetd.c:567: warning: comparison is always false due to limited range
of data type
rinetd.c: In function 'handleAccept':
rinetd.c:1014: warning: pointer targets in passing argument 3 of
'accept' differ in signedness
rinetd.c: In function 'log':
rinetd.c:1395: warning: the address of 'log', will always evaluate as 'true'
/root/popcorn/smp/smp86xx_toolchain.20080505/build_mipsel_nofpu/staging_dir/bin-ccache/../lib/gcc/mipsel-linux-uclibc/4.0.4/../../../../mipsel-linux-uclibc/bin/ld:
match.o: Relocations in generic ELF (EM: 3)
/root/popcorn/smp/smp86xx_toolchain.20080505/build_mipsel_nofpu/staging_dir/bin-ccache/../lib/gcc/mipsel-linux-uclibc/4.0.4/../../../../mipsel-linux-uclibc/bin/ld:
match.o: Relocations in generic ELF (EM: 3)
/root/popcorn/smp/smp86xx_toolchain.20080505/build_mipsel_nofpu/staging_dir/bin-ccache/../lib/gcc/mipsel-linux-uclibc/4.0.4/../../../../mipsel-linux-uclibc/bin/ld:
match.o: Relocations in generic ELF (EM: 3)
/root/popcorn/smp/smp86xx_toolchain.20080505/build_mipsel_nofpu/staging_dir/bin-ccache/../lib/gcc/mipsel-linux-uclibc/4.0.4/../../../../mipsel-linux-uclibc/bin/ld:
match.o: Relocations in generic ELF (EM: 3)
/root/popcorn/smp/smp86xx_toolchain.20080505/build_mipsel_nofpu/staging_dir/bin-ccache/../lib/gcc/mipsel-linux-uclibc/4.0.4/../../../../mipsel-linux-uclibc/bin/ld:
match.o: Relocations in generic ELF (EM: 3)
/root/popcorn/smp/smp86xx_toolchain.20080505/build_mipsel_nofpu/staging_dir/bin-ccache/../lib/gcc/mipsel-linux-uclibc/4.0.4/../../../../mipsel-linux-uclibc/bin/ld:
match.o: Relocations in generic ELF (EM: 3)
match.o: could not read symbols: File in wrong format
collect2: ld returned 1 exit status

 
 
Sune Vuorela (08-10-2008)
Kommentar
Fra : Sune Vuorela


Dato : 08-10-08 22:27

On 2008-10-08, Esben von Buchwald <find.mig@paa.google> wrote:
> Af forskellige grunde har jeg behov for at køre rinetd "internet
> redirection server" http://www.boutell.com/rinetd/ på den
>
> Jeg startede med at finde en debian pakke med rinetd til mipsel, det
> fungerede ikke, den genkender ikke filen som eksekverbar.

Det kunne være på grund af anden libc eller lignende.

> Jeg forsøgte herefter at kalde mipsel-linux compileren i stedet, hvilket
> giver mig fejlen nedenfor...
>
>
> Det lykkedes mig at kompilere helloworld.c til den og efterfølgende
> afvikle den på min media player samt på min router (som også er mipsel
> baseret) - men hvorfor vil den ikke kompilere rinetd?
>
> Det skal siges at jeg er forholdsvis grøn i det med at lave cross
> compiling etc. så jeg har sikkert lavet nogle begynderfejl?
>
> debian/rinetd# mipsel-linux-gcc rinetd.c match.o -o rinetd

Hvad er match.o ?

/Sune

Thorbjørn Ravn Ande~ (08-10-2008)
Kommentar
Fra : Thorbjørn Ravn Ande~


Dato : 08-10-08 22:33

Esben von Buchwald skrev:

> Jeg har fået en virtual maskine med et environment op og køre, men
> rinetd har ingen ./configure hvor jeg kan angive hvilken arkitektur den
> skal builde til.

"configure" er netop opfundet fordi det var noget bøvl med præcis det du
har bøvl med.

> Derfor kiggede jeg i dens makefile og fandt linjen " gcc rinetd.o
> match.o -o rinetd"

Du burde kunne erstatte alle kald til "gcc" (alle, ikk eblot denne) med
"mipssel-linux-gcc" og så genbygge. Det er dog ret dårlige tegn du har med

> debian/rinetd# mipsel-linux-gcc rinetd.c match.o -o rinetd
> rinetd.c:176: warning: conflicting types for built-in function 'log'

At her er programmets opfattelse af "log" og compilerens opfattelse af
"log" forskellige.

> match.o: Relocations in generic ELF (EM: 3)
> match.o: could not read symbols: File in wrong format
> collect2: ld returned 1 exit status

og her er der gået ged i filerne.

Har du ikke mulighed for at installere en c-compiler på en af de to
maskiner du har? Chancen for problemer er meget mindre så.

Ellers så husk at lave den "static" så slipper du for en HEL masse
problemer med Unixudgaven af DLL-Hell.

/THorbjørn

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408925
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste