熟悉 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 程序。

1 #include <stdio.h>
2
3 int main(void)
4 {
5 char s[20];
6 scanf("%s",s);
7 printf("Hello world, from %s.\n",s);
8 return 0;
9 }

保存为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.

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

更多相关文章

  1. Android(安卓)NDK Hello + JNI 与 NDK区别
  2. Android(安卓)6.0权限处理问题
  3. 从CM刷机过程和原理分析Android系统结构
  4. 反编译并且修改Android(安卓)APK包
  5. Linux文件的特殊权限位SUID、SGID作用及编程设置/读取
  6. android运行C程序以及C程序在android下的编译
  7. 探索新的Android权限模式
  8. Android硬件入门-照相机
  9. 立即停止Android(安卓)Studio 编译

随机推荐

  1. [Android]在App中使用相机
  2. Android(OpenCV) NDK开发: 0xdeadbaad(co
  3. Android之adb环境变量配置
  4. Android无法解锁debug
  5. Selector、shape详解(一)
  6. Android(安卓)如何开发 Bottom Navigatio
  7. 在android中policymanager
  8. android dialog 动画
  9. 【Android】文件读写操作(含SDCard的读写)
  10. Android——Activity四种启动模式