2016-10-13 5 views
1



私はC++で書かれたコードベースを持っています。ビルドシステムでは、Androidのndk-buildスクリプトを使用して、共有ライブラリと実行可能ファイル用に定義されたmakefileを使用します。バイナリはAndroidデバイスで実行されます。UbuntuでAndroidネイティブアプリケーション(実行ファイル)をビルドして実行する

私の質問は:現在のビルド構成を使用し、この実行可能ファイルをビルドして自分のローカルホストで実行する可能性がありますか? Ubuntu?
ABIをx86_64に変更して(「hello world」という簡単な例で)試しましたが、これはうまくいきません。実行ファイルは、Android環境の動的リンカーを使用します。

これを設定する方法はありますか?

+1

[Androidで実行するためのネイティブ(コマンドライン)実行可能ファイルを作成するにはどうすればよいですか?](http://stackoverflow.com/questions/9460251/how-do-i-build-a-native-commandアンドロイド実行可能ファイル) –

+0

あなたが持つ問題は、アンドロイドのライブラリとの動的リンクです。 IIRCのアンドロイド環境は完全な標準ライブラリをサポートしておらず、いずれの場合も異なるバージョンになります。あなたの最善の策は、Linuxをターゲットにした2番目のビルドステップを追加することです。特定のアンドロイド版で利用可能なc/C++機能を確認するには、グーグルで行う必要もあります。私はそれによって摘発された。私のコードは4.1,4.3,5,6で動作しましたが、4.0ではクラッシュしました。 – jhbh

答えて

0

同じビルドシステムではありません。 ndk-buildはAndroidバイナリのみをビルドできます。

ビルドを別のシステム(make、cmakeなど)に移行すると、コードとなる可能性があります。あなたが使用しているNDKの唯一の部分がlibc/libm/libdlであれば、それはうまくいくはずです(ただしlibcとlibdlにはいくつかのAndroid拡張があります)。あなたがAndroidフレームワークライブラリのどれかに頼っているのであれば、それらはUbuntuシステム上に存在しないので動作しません。

関連する問題