如何在Android系统上编译和运行C/C++程序

au9on6nz  于 2023-04-04  发布在  Android
关注(0)|答案(5)|浏览(148)

Q1)我想在Android模拟器上运行一个简单的C程序。我在机器上使用windows xp操作系统。我已经安装了sdk, jdk, eclipse用于Android开发,并成功在AVD上运行Android应用程序。
Q2)我只需要知道有没有办法在AVD上运行C程序(没有任何Java)。在我的机器上我安装了arm,并使用它编译了一个C程序。
Q3)我还想知道是否可以将编译后的二进制文件推送到android设备或AVD中,并使用android设备或AVD的终端运行?

qxsslcnc

qxsslcnc1#

您可以使用ARM交叉编译器编译C程序:

arm-linux-gnueabi-gcc -static -march=armv7-a test.c -o test

然后你可以把编译好的二进制文件推到某个地方(不要把它推到SD卡上):

adb push test /data/local/tmp/test
b4lqfgs4

b4lqfgs42#

如果您已成功安装NDK,请从它示例应用程序开始
http://developer.android.com/sdk/ndk/overview.html#samples
如果你有兴趣的另一种方式,那么可能这将有助于
http://shareprogrammingtips.blogspot.com/2018/07/cross-compile-cc-based-programs-and-run.html
我还想知道是否可以将编译后的二进制文件推送到Android设备或AVD中,并使用Android设备或AVD的终端运行?
在这里您可以看到NestedVM
NestedVM提供Java字节码的二进制翻译。这是通过让GCC编译成MIPS二进制文件,然后将其翻译成Java类文件来完成的。因此,任何用C,C++,Fortran或GCC支持的任何其他语言编写的应用程序都可以在100%纯Java中运行,而无需更改源代码。
示例:Cross compile Hello world C program and run it on android

cgyqldqp

cgyqldqp4#

包含<stdio.h>

public int findDuplicate(){

// Read the number of rows from the user
printf("Enter the number of rows: ");
scanf("%d", &rows);

// Pattern 1
printf("\nPattern 1:\n");
for (i = 1; i <= rows; i++) {
    for (j = 1; j <= i; j++) {
        printf("*");
    }
    printf("\n");
}

// Pattern 2
printf("\nPattern 2:\n");
for (i = rows; i >= 1; i--) {
    for (j = 1; j <= i; j++) {
        printf("*");
    }
    printf("\n");
}

// Pattern 3
printf("\nPattern 3:\n");
for (i = rows; i >= 1; i--) {
    for (j = 1; j <= i; j++) {
        printf("*");
    }
    printf("\n");
}

// Pattern 4
printf("\nPattern 4:\n");
for (i = 1; i <= rows; i++) {
    for (j = 1; j <= i; j++) {
        printf("*");
    }
    printf("\n");
}

// Pattern 5
printf("\nPattern 5:\n");
for (i = 1; i <= rows; i++) {
    if (i % 2 != 0) {
        for (j = 1; j <= rows; j++) {
            printf("*");
        }
    } else {
        printf("*");
    }
    printf("\n");
}

// Pattern 6
printf("\nPattern 6:\n");
for (i = 1; i <= rows; i++) {
    for (j = 1; j <= i; j++) {
        printf("*");
    }
    for (j = 1; j <= rows - i; j++) {
        printf(" ");
    }
    for (j = 1; j <= rows - i; j++) {
        printf(" ");
    }
    for (j = 1; j <= i; j++) {
        printf("*");
    }
    printf("\n");
}

// Pattern 7
printf("\nPattern 7:\n");
for (i = rows; i >= 1; i--) {
    for (j = 1; j <= i; j++) {
        printf("*");
    }
    printf("\n");
}

// Pattern 8
printf("\nPattern 8:\n");
for (i = 1; i <= rows; i++) {
    for (j = 1; j <= i; j++) {
        printf("*");
    }
    for (j = 1; j <= rows - i; j++) {
        printf(" ");
    }
    for (j = 1; j <= rows - i; j++) {
        printf(" ");
    }
    for (j = 1; j <= i; j++) {
        printf("*");
    }
    printf("\n");
}

return 0;

}

j2datikz

j2datikz5#

如果你想直接在你的Android设备上编译和运行Java/C/C应用程序,我推荐Google Play的Terminal IDE环境。这是一个非常光滑的包,可以直接在你的设备上开发和编译Android APK,Java,C和C。界面都是基于命令行和“vi”的,所以它有真实的的Linux感觉。它附带了gnu C/C++实现。
此外,还有一个telnet和telnet服务器应用程序内置,所以你可以做所有的编程与您的PC和大键盘,但工作的设备。没有根权限是必要的。

相关问题