2013-04-05 2 views
0

Я пытаюсь создать собственный исполняемый файл для android, и он продолжает сбой. тестирование файла с помощью readelf и objdump revivals означает, что файл считается общим файлом объекта. Я использую R8e и компиляции с НДК-строить

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 для андроида -9 приводит к созданию исполняемого файла (и никаких сбоев).

ответ

0

Вы пробовали указать аргументы int args и char *argv[] для вашего основного метода()? Кроме того, где вы пытаетесь запустить его?

+0

да, и я бегу это на Samsung Galaxy S работает CyanogenMod 9 –

0

Я подтверждаю эту ошибку ... У меня был проект, который отлично скомпилирован с ndk-r8, но когда я переключился на ndk-8e, мой исполняемый файл больше не строился.

Я сообщил об этом здесь: https://code.google.com/p/android/issues/detail?id=55769

0

Вот ответ, который я получил от Google:

Это нормально. По умолчанию при настройке уровня API на уровне 17 или выше «Позиционные независимые исполняемые файлы» (a.k.a. PIE) генерируются правилом BUILD_EXECUTABLE.

Это исполняемые файлы, но поддерживаются только на Android версии 4.1 и выше. Подробнее см. В [1].

Если вы действительно не хотите их (например, потому что вы хотите, чтобы ваша программа для запуска на предыдущих версиях платформы), у вас есть два варианта:

  • Target более низкий уровень API.
  • Используйте 'APP_PIE: = ложь' в вашем Application.mk