怎样用 C/C++ 开发一个原生程序运行在 Android 下而不用 ADK、NDK
2011-08-14 23:02
666 查看
熟悉 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 程序。
保存为 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.
怎么样,有意思吧,赶快去试试吧,我相信你也会感到有趣的!
的开发者看到这篇弱弱的文章该会嘲笑了,不过这篇文章是写给那些还不知道的开发者的。当然如果你对此比较熟悉,又打算看下去,我会感到很高兴的。:)
众所周知,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.
怎么样,有意思吧,赶快去试试吧,我相信你也会感到有趣的!
相关文章推荐
- 怎样用 C/C++ 开发一个原生程序运行在 Android 下而不用 ADK、NDK
- 怎样用 C/C++ 开发一个原生程序运行在 Android 下而不用 ADK、NDK
- android之NDK(jni)开发笔记1——运行第一个NDK程序
- Android下用C++开发ndk程序
- Android开发学习解决程序运行就出错的一个问题
- Windows平台使用NDK编写在Android上运行的C/C++标准程序
- 解决Android开发中在调试模式下运行一个程序后出现Application (xxx) is waiting for the debugger to attach
- 开发的一个android程序,总是显示无法运行,就退出了。但是没有报错。求大神解救啊!
- 开发的一个android程序,总是显示无法运行,就退出了。但是没有报错。求大神解救啊!
- 问题阐述: 本人使用mini6410开发了一个sqlite数据库的程序,在mini6410的linux系统下已经能够成功运行了。因为Android使用的也是linux内核,所以我想当然的认为按照同样
- 开发的一个android程序,总是显示无法运行,就退出了。但是没有报错。求大神解救啊!
- eclipse开发cocos2dx 3.2环境搭建之中的一个: Android C\C++环境搭建(ndk r9d)
- winform 中怎样实现一个程序只能在一台计算机上运行
- Android利用NDK实现C++开发
- Android NDK 学习(3) 从零开始写一个HelloNDK程序
- 在ubuntu下创建、编译并运行一个C++程序的过程
- Android通知之通知栏点击通知后返回正在运行的程序,而不是一个新Activity
- 云平台编程与开发(三):创建基于X5Cloud云平台的Hello World程序(运行在Android的手机、平板上)
- Android项目实战之(1)-- 开发一个"快速冲浪"的程序
- 常用开发工具镜像,不用翻墙,即可下载Chrome Android Studio Gradle Golang NDK SDK NodeJS