2012-04-15 7 views
0

Ich versuche, für ein Android-Gerät zu bauen, und ich habe nicht wirklich SDK/NDK für sie. Im Gegensatz zu den üblichen Android-Geräten, die libc.so haben, hat dieser einen symbolischen Link libc.so.6 -> libc-2.7.so. Wenn ich mit regulären Android NDK-X86 Build meine gemeinsame lib (wie von readelf-d gemeldet) importiert von libc.so, die nicht auf dem Gerät existiert.Verknüpfung auf Android/Linux libc (x86) libc.so vs libc.so.6

Was ist das Nummerierungs über ist, wie funktioniert gcc/ld libc.so.6 zu verbinden weiß, ob ich einfach -lc sagen?

Um genauer zu sein, ist das Gerät eine Android-Google-TV-Box (Logitech Revue) und es scheint, dass es ein bisschen anders als normale Android ist, denke ich, es nicht verzögerte bionische verwendet und normale libc, regelmäßige Pthread und es scheint näher zu sein als Linux.

So kann ich regelmäßige Android-x86-Toolchain-Code für das Google TV-Gerät zu erzeugen, die unterschiedliche libc hat? Woher weiß es, stattdessen zu libc.so.6 zu verlinken (damit ich sagen kann, mit welchen libs ich verlinken soll?). Ich habe versucht, diese Bibliotheken einfach per Link-Zeit zu codieren, aber dann bekomme ich zur Laufzeit einige Probleme (fehlende Symbole, weil sie inkompatible Header und Bibliotheken verwendet haben).

+0

(Die GoogleTV verwendet Glibc, BTW, während normale Android Toolchains bionische verwenden; der Name der Bibliothek wird nicht Ihre einzige Herausforderung sein.) –

Antwort

0

Was die Nummerierung ist, ist über

Sie über externe Bibliothek Versionierung here lesen kann.

Wie kann gcc/ld mit libc.so.6 verlinken, wenn ich einfach -lc sage?

Unter Linux mit glibc ist die libc.so eigentlich eine Linker-Skript, so etwas wie enthalten:

GROUP (/lib/libc.so.6 /usr/lib/libc_nonshared.a 
     AS_NEEDED (/lib/ld-linux-x86-64.so.2)) 

So kann ich regelmäßige Android-x86-Toolchain-Code für das Google TV-Gerät zu erzeugen, das hat unterschiedliche libc?

Nein, Sie brauchen einen Kreuz -Compiler dafür. Ein Cross-Compiler ist ein Compiler, der auf einem Betriebssystem läuft (hier normales Linux), aber eine ausführbare Datei erstellt, die irgendwo anders läuft (auf Google V).

Ihre beste Wette ist SDK für GoogleTV zum Download, die eine solche Cross-Compiler enthalten wird, sowie die entsprechenden Bibliotheken.

+0

Nein, es tut nicht --- es gibt keine native Entwicklung für die Google TV noch nicht. –

Verwandte Themen