[英]Running C program on Android
我通过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
当我运行程序它工作但然后发生“停止”和“非法指令”。
我该怎么做才能解决这个问题?
我和@Amigable Clark Kent在此。 想想你到底在那里。
你告诉编译器main()将返回一个int。 在运行时,加载器正准备从函数接收返回的值,该函数从未实际返回。 如果它在寄存器或堆栈中寻找它并不重要,那个地方将持有错误的东西。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.