【发布时间】:2011-12-12 07:11:09
【问题描述】:
我通过 NDK 为 Android 编译了一个简单的 C 程序,并在 Android 上运行。
C源码:
#include <stdio.h>
int
main ()
{
printf ("Hello world!\n");
}
编译 C 源的脚本:
#!/bin/bash
PREFIX="/opt/android-ndk-r7"
CC="$PREFIX/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-arm/bin/arm-linux-androideabi-gcc"
NDK="$PREFIX/platforms/android-14/arch-arm"
CFLAGS="-I$NDK/usr/include"
LDFLAGS="-nostdlib -Wl,-rpath-link=$NDK/usr/lib -L$NDK/usr/lib $NDK/usr/lib/crtbegin_dynamic.o -lc"
$CC -o hello hello.c $CFLAGS $LDFLAGS
当我在 Android 终端上运行程序时发生了什么:
$ export PATH=/data/local/bin:$PATH
$ hello
Hello world!
[1] + Stopped (signal) hello
$ exit
You have stopped jobs.
[1] Illegal instruction hello
$ exit
当我运行程序时它可以工作,但随后出现“停止”和“非法指令”。
我该怎么做才能解决这个问题?
【问题讨论】:
-
你当然应该“返回 0;”在你的程序中,但为什么会崩溃,我不知道。
-
@AmigableClarkKant:在 C99 中,
return 0;是隐含的...... -
@KerrekSB,真的吗?对所有伟大而真实的事物是何等的侮辱!
-
如何安装 Android NDK tool cahin?
标签: android c android-ndk