Я пытаюсь создать простое приложение HelloWorld и запустить его в Genymotion. Моя строительная система Ubuntu 14.04 64bit. У меня установлен Android SDK (r22.6.2) и NDK (r9d).
Первая попытка: создать с использованием предварительно созданной инструментальной привязки NDK ARM
TOOLCHAIN = $NDK/toolchains/arm-linux-androideabi-4.8
$TOOLCHAIN/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc --sysroot=$PLATFORM hello.c -o hello
adb push hello /sdcard/
./hello
Я получаю сообщение об ошибке
/system/bin/sh: ./Hello: not executable: magic 7F45
После некоторых исследований я быстро понял, что у Genymotion есть x86 арка вместо ARM
Вторая попытка: создать с помощью автономного инструментального средства x86
-
Сделать x86 одиночной toolchain первым
cd $NDK/build/tools ./make-standalone-toolchain.sh --arch=x86 --platform=android-19 --install-dir=/tmp/android-toolchain --ndk-dir=../../. --system=linux-x86_64
-
Создайте Hello, используя toolchain
cd tmp/android-toolchain/bin ./i686-linux-android-gcc -o Hello -c hello.c
-
Запустите Hello on Genymotion
adb push hello /data/local/tmp adb shell cd /data/local/tmp ./hello /system/bin/sh: ./Hello: not executable: magic 7F45
Ran uname -a
на машине genymotion.
Ran file Hello
в исполняемом файле
Итак, это должно быть совпадение.
По-прежнему возникает ошибка. Было бы очень приятно, если бы кто-то мог пролить свет.
Изменить 1: Пробовал запуск исполняемого файла в /data/local/tmp вместо/sdcard/. Все еще дает ту же ошибку.
Отредактируйте 2: Ran uname
в системе genymotion и file
в исполняемом файле, чтобы увидеть, соответствуют ли они.