0

Android 用のネイティブ実行可能ファイルを作成しようとしていますが、クラッシュし続けます。readelf および objdump を使用してファイルをテストすると、ファイルが共有オブジェクト ファイルと見なされることが復活します。私はr8eを使用し、ndk-buildでコンパイルしています

test.c:

int main(){
  return 0;
}

Android.mk:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC FILES := test.c
LOCAL_MODULE := test

include(BUILD_EXECUTABLE)

--

app_platform を android-9 に設定すると、実行可能ファイルが作成されます (クラッシュは発生しません)。

4

3 に答える 3

0

これが私がグーグルから得た答えです:

これは正常です。デフォルトでは、API レベル 17 以上を対象とする場合、「位置に依存しない実行可能ファイル」(別名 PIE) が BUILD_EXECUTABLE ルールによって生成されます。

これらは実行可能なバイナリですが、Android 4.1 以降でのみサポートされています。詳細については、[1] を参照してください。

これらが本当に必要ない場合 (たとえば、プログラムをプラットフォームの以前のリリースで実行したいなど)、次の 2 つの選択肢があります。

  • より低い API レベルをターゲットにします。
  • Application.mk で「APP_PIE := false」を使用します。
于 2013-05-27T10:09:16.260 に答える