Как запустить бинарный файл на платформе Android? - PullRequest
1 голос
/ 19 июля 2011

Я хочу запустить программу "Hello World" на Android.

Она написана на C, и я пробовал разные кросс-компиляторы.

arm-elf-gcc: когда явведите "./hello" на моем телефоне с ADB я получаю "Ошибка сегментации".Однако arm-elf-gdb запускает программу hello нормально, без ошибки сегментации.

arm-linux-gcc: когда я набираю «./hello» на своем телефоне, я получаю «Недопустимая инструкция»

Есть идеи, как мне запустить программу на телефоне?

Ответы [ 2 ]

5 голосов
/ 31 января 2012

Этот урок, кажется, довольно хорошо объясняет, как создавать и отлаживать нативные приложения на C для Android: http://betelco.blogspot.com/2010/01/buildingdebugging-android-native-c.html

2 голосов
/ 28 мая 2013

Сначала убедитесь, что у вас есть NDK:

http://developer.android.com/tools/sdk/ndk/index.html

Вот самый простой способ собрать двоичный файл C для вашего телефона:

http://developer.android.com/tools/sdk/ndk/index.html

http://www.kandroid.org/ndk/docs/STANDALONE-TOOLCHAIN.html

Обычно $ NDK (может отличаться) =

Linux:

/ дома / <user> / андроид-NDK

Mac OS X:

/ Users / <user> / андроид-NDK

в терминале:

# create tool-chain - one line
$NDK/build/tools/make-standalone-toolchain.sh --platform=android-3 --install-dir=/tmp/my-android-toolchain

# add to terminal PATH variable
export PATH=/tmp/my-android-toolchain/bin:$PATH

# make alias CC be the new gcc binary
export CC=arm-linux-androideabi-gcc

# compile your C code(I tried hello world)
$CC -o foo.o -c foo.c

# push binary to phone
adb push foo.o /data/local/tmp

# execute binary
adb /data/local/tmp/foo.o
...