zoukankan      html  css  js  c++  java
  • 怎样用 C/C++ 开发一个原生程序运行在 Android 下而不用 ADK、NDK

    熟悉 Android 与 Linux 的开发者看到这篇弱弱的文章该会嘲笑了,不过这篇文章是写给那些还不知道的开发者的。当然如果你对此比较熟悉,又打算看下去,我会感到很高兴的。:)

    众所周知,Android 是基于 Linux 的,因此大家都可以想到,Android 应该可以运行 Linux 下的程序,但是该平台是采用的 ARM 的处理器,因此哪里去找一款 ARM Linux 的编译器呢?这里我向大家推荐 Sourcery G++ 这款编译器,下载地址是:

    http://www.codesourcery.com/sgpp/lite/arm/portal/release1803

    因为我的系统是 Windows,因此我下载了 IA32 Windows Installer ,按照安装提示一步步安装完毕后,我们就可以用 C/C++ 来写程序,用它编译后放在 AVD 或你的实机上运行了。 

    下面是我用 C 写的一个 Hello World 程序。

    #include <stdio.h>
    
    int main(void)
    {
    	char s[20];
    	scanf("%s",s);
    	printf("Hello world, from %s.\n",s);
    	return 0;
    }
    

    保存为 hello.c,因为 Android 的 Linux 内核没有标准IO库函数,因此我们采用静态编译的方式进行编译。

    arm-none-linux-gnueabi-gcc -static -o hello hello.c

    然后我们使用 adb 将 hello 程序上传在 AVD 或你的实机的 /data 目录下。你可能会有疑问,为什么要上传到这个目录呢?呵呵,其实是因为 Android 的 /system/bin 与 /sbin 目录是 Read Only System,而 /mnt/sdcard 下面所有的文件所有者用户是 system,权限组是 sdcard_r,就算是 root 账户也无法增加文件的可执行权限。当然你也有可能找到其他可上传又可改文件权限的目录。

    adb push hello /data

    然后我们用 adb shell 命令进入你的 Android 设备的 shell 里,更改它的权限。

    adb shell

    cd /data

    chmod 777 hello 

    下面是执行的结果:

    ./hello

    newcj

    Hello world, from newcj.

    怎么样,有意思吧,赶快去试试吧,我相信你也会感到有趣的!

    作者:newcj
    出处:http://newcj.cnblogs.com/
    欢迎转载,但还请尊重劳动果实,保留此段声明并注明原文链接。

  • 相关阅读:
    LightOJ1074(spfa+dfs标记负环及负环能够到达的点)
    (模板)AC自动机模板
    poj3660(floyd最短路)
    (模板)hdoj2544(最短路--bellman-ford算法&&spfa算法)
    hdoj4099(字典树+高精度)
    poj1056(字符串判断是否存在一个字符串是另一个字符串的前缀)
    hdoj1247(字典树)
    poj3630||hdoj1671(字典树)
    (模板)hdoj1251(字典树模板题)
    poj3348(求凸包面积)
  • 原文地址:https://www.cnblogs.com/newcj/p/2138553.html
Copyright © 2011-2022 走看看