2012-01-11 11 views
2

私はオープンソースプロジェクトの構築に興味があり、GNUライブラリGLIBCとGLIBMが必要です。共有(.so)オブジェクト、またはスタティック(.a)オブジェクトであっても、ARMv7-neonアーキテクチャで、API-9を使用してLinuxでクロスコンパイルすると(Ubuntu 11.10をホストとして使用しています) JavaのJNIを呼び出すライブラリとして、最終的に配布用のAPKとしてコンパイルするには、この結果を達成するためにどのような手順を実行しますか?NDKライブラリのGLIBCに対するビルド

私はGoogleのNDKツールチェーン(ドキュメントにしたがって、$ PATHと$ CCを難しくて簡単に設定する)、さまざまなカスタムツールチェーン、Code Sourcery toolchainXDA forum using crosstool-ngで提案されているツールチェーンを試してみました。 JNIから呼び出すことができる共用オブジェクトファイルを実現し、ルートされていないAndroidデバイス上の完全なGLIBCライブラリにアクセスできますか?

私はGLIBCとGLIBMをローカルにビルドし、NDKのarm-linux-androideabi-ldを使って関連オブジェクト(.o)ファイルとリンクを手動でコピーすることです。 JavaのSystem.LoadLibarary()を使用してライブラリを呼び出すと、再配置が失敗するため(エラー未知のリロケーションタイプ19を与える)、Crosstool-ngおよびCodeSourceryのlibc.so.6ファイルは機能しません。再配置に関する私の知識は最高ではありませんが、これを読んだところから/linux/elf.hヘッダファイルを変更する必要がありますが、そこからどこに行くのか正確にはわかりません。

リンクされたときにすべての依存関係が解決された静的な実行可能ファイルを作成することは可能ですが、これを私が知っている限りAPKファイルとしてパッケージ化することはできません。

確かに、私はAndroidプラットフォームでBionic以外のものに対してCコードをコンパイルしたいとは思わないでしょうか? Androidに移植できる非常に多くのCプロジェクトがあり、明らかにGLIBCはiPhoneでかなりの期間利用可能です。

+0

あなたは解決策を考え出しましたか?もしそうなら、親切に私に知らせてください。 – re3el

+0

いいえ、残念ながら、それは多くの作業で可能であるように見えます:http://unix.stackexchange.com/questions/163765/cross-compiling-glibc-for-my-arm-soc –

答えて

2

低レベルのCライブラリは、OS自体と非常に緊密な関係にあります。 LinuxとAndroidはとほとんど同じですが、と同じかもしれませんが、そうではありません。別のCライブラリをビルドするには、そのCライブラリを最初に移植する必要があります。

+0

また、ほとんどの場合、Cライブラリ自体を移植するよりも、アプリケーションを別の「標準」Cライブラリに移植する方が簡単です。 – nos

+0

まあ、その投稿はglibについてではなく、glibcに関するものです。私はglibがまっすぐ前方にあることを期待します、それは多かれ少なかれ普通のライブラリです。 – nos

関連する問題