0

Android デバイス用にビルドしようとしていますが、実際の SDK/NDK がありません。libc.so を持つ通常の Android デバイスとは異なり、これにはシンボリック リンク libc.so.6 --> libc-2.7.so があります。通常の Android NDK-x86 でビルドすると、共有ライブラリ (readelf -d で報告) がデバイスに存在しない libc.so からインポートされます。

その番号付けとは何ですか?単純に -lc と言った場合、gcc/ld は libc.so.6 へのリンクをどのように認識しますか?

より具体的には、そのデバイスは android google tv box (Logitech revue) であり、通常の android とは少し異なるようです。私の推測では、遅延バイオニックを使用せず、通常の libc、通常の pthread を使用しているようです。通常のLinuxに近い。

では、通常の Android-x86 ツールチェーンを使用して、libc が異なる Google TV デバイス用のコードを生成できますか? 代わりに libc.so.6 にリンクすることをどのように認識しますか (どのライブラリにリンクするかを伝えることができますか?)。リンク時にこれらのライブラリを単純にハードコーディングしようとしましたが、実行時にいくつかの問題が発生します (互換性のないヘッダーとライブラリを使用していたため、シンボルが欠落しています)。

4

1 に答える 1

0

その番号付けは何ですか

外部ライブラリのバージョン管理については、こちらを参照してください。

単純に -lc と言った場合、gcc/ld は libc.so.6 へのリンクをどのように認識しますか?

glibc を使用する Linux では、これlibc.soは実際には次のような内容を含むリンカー スクリプトです。

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

では、通常の Android-x86 ツールチェーンを使用して、libc が異なる Google TV デバイス用のコードを生成できますか?

いいえ、これにはクロスコンパイラが必要です。クロスコンパイラは、1 つの OS (ここでは通常の Linux) で実行されますが、別の場所 (Google V) で実行される実行可能ファイルを作成します。

最善の策は、このようなクロス コンパイラと必要なライブラリを含む、GoogleTV 用の SDK をダウンロードすることです。

于 2012-04-18T04:31:47.587 に答える