Linking Probleme

Hallo Liste,

wie kann ein Bibliothek mit einer anderen C-Library (als die libc6)
kompilieren? Ich muss naemlich die Bibliothek libpcap "gegen" uClibc
kompilieren.

was ich schon versucht habe:

<snippet>
LDFLAGS=-L/opt/cy/mipsfple-uclibc/lib
./configure --prefix=/opt/libpcap --host=mipsel --with-pcap=linux
configure: error: C compiler cannot create executables
</snippet>

<snippet>
./configure --prefix=/opt/libpcap --host=mipsel --with-pcap=linux
LDFLAGS=-L/opt/cy/mipsfple-uclibc/lib && make
...
warning: libc.so.6, needed by [...], may conflict with libc.so.0
</snippet>

Gruesse,
Daniel

Warum?
Willst du cross-compilieren oder soll das executable auf deinem PC lauffaehig
sein? Ist statisches Linken eine Option fuer dich?

Thomas

Hallo,

also die Ziel Architektur ist MIPS und ich habe auch schon das
richtige Toolchain. Ich weiss eben nicht wie man 'configure' mitteilt
es soll uClibc benutzen anstatt die glibc. Wenn ich LDFLAGS vor dem
configure setze, dann gibt er einen Fehler. Wenn ich die Variable nach
dem configure setze, wird trotzdem die glibc bevorzugt.

Im Toolchain habe die lib Ordner (mipsfple/lib, mipsfple-uclibc/lib)
die die richtigen Bibliotheken enthalten muessten.

Gruesse,
Daniel

Hallo,

also die Ziel Architektur ist MIPS und ich habe auch schon das
richtige Toolchain. Ich weiss eben nicht wie man 'configure' mitteilt
es soll uClibc benutzen anstatt die glibc.

Bitte ueberpruefe ob auch die richtige Toolchain verwendet wird, also in
deinem Fall mipsel-gcc, mipsel-strip, mipsel-ld etc.
Ich vermute, dass dein lokaler Compiler (also gcc, ohne Praefix) verwendet
wird und make gar nicht fuer MIPS cross-compiliert.

Wenn ich LDFLAGS vor dem
configure setze, dann gibt er einen Fehler. Wenn ich die Variable nach
dem configure setze, wird trotzdem die glibc bevorzugt.

Wenn automake diese Tools verwendet, dann musst du keinen Path angeben (was
auch falsch waere: auf dem Target-Prozessor sind die Bibliotheken natuerlich
irgendwo anders als auf deinem PC, wenn ueberhaupt vorhanden).

Du verwendest "--host=mipsel" fuer configure. Ich kenne configure nicht sehr
gut, aber musst du fuer eine cross-compilation nicht auch --build angeben?

Was bekommst du als Output von configure? Etwas wie
     checking for mipsel-strip... mipsel-strip
     checking for mipsel-gcc... mipsel-gcc
     ...
     checking whether the C compiler works... yes
     checking whether we are cross compiling... yes

HTH,
Thomas

Daniel wrote:

Hallo Liste,

wie kann ein Bibliothek mit einer anderen C-Library (als die libc6)
kompilieren? Ich muss naemlich die Bibliothek libpcap "gegen" uClibc
kompilieren.

was ich schon versucht habe:

<snippet>
LDFLAGS=-L/opt/cy/mipsfple-uclibc/lib
./configure --prefix=/opt/libpcap --host=mipsel --with-pcap=linux
configure: error: C compiler cannot create executables
</snippet>

<snippet>
./configure --prefix=/opt/libpcap --host=mipsel --with-pcap=linux
LDFLAGS=-L/opt/cy/mipsfple-uclibc/lib && make
...
warning: libc.so.6, needed by [...], may conflict with libc.so.0
</snippet>

Schau dir mal die config.log an, die configure im gleichen Verzeichnis
erzeugt und detailiertere Meldungen ausgibt. Dort solltest du die genaue
Fehlerursache finden warum keine executables erzeugt werden können.

Ohne weitere Infos kann man nur spekulieren, wahrscheinlich findet
configure mipsel-gcc nicht und versucht dann mit dem gcc gegen die
MIPS-Bibliotheken aus /opt/cy/mipsfple-uclibc/lib zu linken. Es ist
überhaupt erstmal sicherzustellen, dass configure erkennt dass
Cross-Compiliert wird (host und build system sind verschieden).

Hannes

Habe was neues entdeckt, was den Linuxfreaks, die gleichzeitig
Gamefreaks sind (oder waren)
Freude machen wird:

http://www.gp2x.com/

...billig ist's aber nicht.

bye,
Federico

Hallo,

also laut config.log findet configure mipsel-gcc nicht und deshalb
nimmt er als Alternative den gcc her: das war das Problem. Denn der
Compiler fuer MIPS (und der mit den uClibc Bibliotheken gelinkt worden
ist) heisst nicht mipsel-gcc aber mipsel-uclibc-gcc.

d.h. die Loesung ist ein (triviales)
CC=/opt/cy/mipsfple-uclibc/bin/mipsel-uclibc-gcc

Gruesse,
Daniel