Sto provando a creare una semplice applicazione HelloWorld ed eseguirla su Genymotion. Il mio sistema di costruzione è Ubuntu 14.04 64 bit. Ho installato Android SDK (r22.6.2) e NDK (r9d).Come compilare un programma C per Genymotion (Android x86)
primo tentativo: costruire utilizzando il precompilati NDK ARM toolchain
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
ottengo un errore
/system/bin/sh: ./Hello: not executable: magic 7F45
Dopo aver fatto qualche ricerca, mi rendo conto subito Genymotion ha x86 arco al posto di ARM
Secondo tentativo: creare utilizzando lo strumento autonomo x86 Catena
Marchio x86 standlone toolchain primo
cd $NDK/build/tools ./make-standalone-toolchain.sh --arch=x86 --platform=android-19 --install-dir=/tmp/android-toolchain --ndk-dir=../../. --system=linux-x86_64
Costruire Ciao utilizzando la toolchain
cd tmp/android-toolchain/bin ./i686-linux-android-gcc -o Hello -c hello.c
Run Ciao a 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
sulla macchina genomotion. Ran file Hello
sull'eseguibile
quindi dovrebbe essere una partita.
Sempre con lo stesso errore. Lo apprezzerei davvero se qualcuno potesse far luce.
Modifica 1: Provato a eseguire l'eseguibile in/data/local/tmp invece di/sdcard /. Dà ancora lo stesso errore.
Edit 2: Ran uname
sul sistema genymotion e file
sul file eseguibile per vedere se corrispondono.
Credo ci sia una confusione: si spinge 'ciao' in'/sdcard', ma si esegue 'Hello' da'/'(directory root). Ad ogni modo, Android monta la/sdcard e l'altra memoria esterna come non eseguibili, per ragioni di sicurezza. Quindi, se vuoi spingere ed eseguire il tuo eseguibile, usa qualche altra directory. '/ data/local/tmp' è di solito una buona scelta. –
Ho appena provato a eseguire l'eseguibile in/data/local/tmp. Ancora mi dà lo stesso errore – HBZ
Hai eseguito 'chmod 700/data/local/tmp/hello'? –