当前位置:编程学习 > wap >>

android2.3上的C语言“hello”程序能不能跑???

我用C写了一个“hello,world”的简单程序(roid_test),编译不会有错,因为使用了和编译操作系统一样的编译器,我把程序拷贝到SD卡里,然后放到开发板上,想通过终端来跑这个roid_test,系统提示“permission denied”,我想问问大家是android不支持我这种C代码调用吗?没道理啊!原理上,insmod,ls这些命令和我的roid_test是一种类型的程序!

实际操作如下:望前辈指点
====================================================================
# ./roid_test
./roid_test: permission denied
# chmod +x roid_test
Bad mode
# chmod +x ./roid_test
Bad mode
# chmod 777 ./roid_test
# ./roid_test
./roid_test: permission denied
# ls -l
-rwxrwxrwx root     root         6466 2012-04-25 15:21 roid_test
==================================================================== --------------------编程问答-------------------- 你是写了一个linux的程序,然后想放android设备上运行是吧? --------------------编程问答-------------------- 是的,我认为android是linux内核+android UI(或者说是框架),所以linux的程序应该是可以在上面跑的啊,我的android系统使用arm-eabi-gcc 4.3.1编译,我的“hello,world”也是arm-eabi-4.3.1编译,应该是可以跑的!
我刚刚搜了搜,要用su运行,我这么做了,程序运行了,但是没有看到“hello,world”。我在想是不是打印到别的位置去了??效果如下:
============控制台效果start===============
#su ./roid_test
#
============控制台效果end=============== --------------------编程问答-------------------- 知道的,请告知,谢谢! --------------------编程问答-------------------- --------------------编程问答-------------------- 请试一下stdout(有缓冲,需要累计字符),stderr,或者fprintf --------------------编程问答-------------------- 我刚刚又写了一个程序,打开一个文件,写点东西进去,然后关闭,这程序在X86 linux上已经正确运行,然后我采用arm编译器编译后,放到android开发板上,运行,依然是不报任何错误,但文件没有被创建!!!

坛子里有没有人干过这种事???? --------------------编程问答-------------------- AndroidMainifest里面加权限 --------------------编程问答-------------------- 你能不能用LOGE,LOGD,LOGI捏? --------------------编程问答-------------------- busybox都可以移植
--------------------编程问答--------------------
引用 6 楼  的回复:
我刚刚又写了一个程序,打开一个文件,写点东西进去,然后关闭,这程序在X86 linux上已经正确运行,然后我采用arm编译器编译后,放到android开发板上,运行,依然是不报任何错误,但文件没有被创建!!!

坛子里有没有人干过这种事????


arm-eabi-gcc 不是随便编译出来的二进制就可以成功运行在android上的。说明你没有按照编译规范去编译,所以程序根本没有执行。
具体的编译规范仔细看:build/core/combo/下有 linux_arm.mk   --------------------编程问答-------------------- 首先,你得采用Android NDK编译你的C程序。
其次,你需要获得运行权限。Android 有自己的权限管理,不完全等同于Linux。如果你感兴趣,可用参看Android源码,在system/core/include/private/android_filesystem_config.h下有相关的代码。
最后,如果要在真机上运行,你需要获得root权限,这个内容网上很多,你自己搜索一下。 --------------------编程问答-------------------- 顶下,请问下楼主,你的代码能在真机上运行的,我现在想把纯C语言编写的程序,用ndk编译后,放到C8650这个机器上运行,我现在的情况是:可以./adb push helloworld /mnt/sdcard  这样就push到C8650的sd卡下面了
可是每当我chmod +x helloworld的时候 在总是提示说:Bad mode ;请教下为什么,怎么修改,谢谢了
--------------------编程问答--------------------
引用 12 楼 sno_guo 的回复:
顶下,请问下楼主,你的代码能在真机上运行的,我现在想把纯C语言编写的程序,用ndk编译后,放到C8650这个机器上运行,我现在的情况是:可以./adb push helloworld /mnt/sdcard  这样就push到C8650的sd卡下面了
可是每当我chmod +x helloworld的时候 在总是提示说:Bad mode ;请教下为什么,怎么修改,谢谢了

我已经可以让C程序在android上跑了,现在4.0,2.3都可以跑,重点是编译的时候加上编译选项-static

加权限使用chmod 777 helloworld --------------------编程问答-------------------- 这种情况我当初遇到过,至今无果,所以如果楼主知道是如何解决的,情告知一二!谢谢! --------------------编程问答-------------------- --------------------编程问答-------------------- 把可执行文件放到sdcard是不能给ROOT加X权限的,必须放到data目录,放到DATA目录前线执行mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system,然后chmod 777 可执行文件名,这样就能执行了。
补充:移动开发 ,  Android
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,