我用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
====================================================================

解决方案 »

  1.   

    你是写了一个linux的程序,然后想放android设备上运行是吧?
      

  2.   

    是的,我认为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===============
      

  3.   

    请试一下stdout(有缓冲,需要累计字符),stderr,或者fprintf
      

  4.   

    我刚刚又写了一个程序,打开一个文件,写点东西进去,然后关闭,这程序在X86 linux上已经正确运行,然后我采用arm编译器编译后,放到android开发板上,运行,依然是不报任何错误,但文件没有被创建!!!坛子里有没有人干过这种事????
      

  5.   


    arm-eabi-gcc 不是随便编译出来的二进制就可以成功运行在android上的。说明你没有按照编译规范去编译,所以程序根本没有执行。
    具体的编译规范仔细看:build/core/combo/下有 linux_arm.mk  
      

  6.   

    首先,你得采用Android NDK编译你的C程序。
    其次,你需要获得运行权限。Android 有自己的权限管理,不完全等同于Linux。如果你感兴趣,可用参看Android源码,在system/core/include/private/android_filesystem_config.h下有相关的代码。
    最后,如果要在真机上运行,你需要获得root权限,这个内容网上很多,你自己搜索一下。
      

  7.   

    顶下,请问下楼主,你的代码能在真机上运行的,我现在想把纯C语言编写的程序,用ndk编译后,放到C8650这个机器上运行,我现在的情况是:可以./adb push helloworld /mnt/sdcard  这样就push到C8650的sd卡下面了
    可是每当我chmod +x helloworld的时候 在总是提示说:Bad mode ;请教下为什么,怎么修改,谢谢了
      

  8.   

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

  9.   

    把可执行文件放到sdcard是不能给ROOT加X权限的,必须放到data目录,放到DATA目录前线执行mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system,然后chmod 777 可执行文件名,这样就能执行了。