簡體   English   中英

在Android上運行C程序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM