不知道我有没有描述清楚!
       Android不是基于linux平台的吗?我现在需要开发一个linux平台上的工具到Android下层的linux上使用,但发现放到手机中的文件系统(比如/system/bin)之后不能运行,我放上去的是静态编译好的linux可执行文件。
请问我有没有高手知道解惑的?

解决方案 »

  1.   

    为什么不能运行?什么错误?
    你是用交叉编译工具弄出来的ARM上的可执行文件吗?
      

  2.   

    你是基于NDK的么,如果不是的话,肯定是不行的,在一个android是ARM体系的。
      

  3.   

    这个我刚刚玩过。是可以运行的(在emulator上)。
      

  4.   

    需要NDK交叉编译出静态库或动态库,java调用c就是jni了啊。
      

  5.   

    我不是用的jni,我在linux用gcc编译出来的可执行文件,不是库文件。请问你们是怎么做的?用JNI可以编译出可执行文件吗?
      

  6.   

    :)引用错了
    请问你们遇到过这个问题吗?需要用JNI编译?JNI可以编出可执行文件吗?
    说简单点,我就是想向Android下添加一个类似adb的工具,是用C写的。
      

  7.   

    android的编译需要用arm的toolchain这是cpu决定的
      

  8.   

    这个没涉猎过,不知道http://disanji.net/2011/03/01/android-service-realization/对你有没有帮助
      

  9.   

    谢谢,只不过那个只是讲解jni
      

  10.   


    那个连接讲的是添加可执行程序到android平台下。有main的
    int main(int argc, char** argv)
     
    {
     
    sp<ProcessState> proc(ProcessState::self());
     
    sp<IServiceManager> sm = defaultServiceManager();
     
    LOGI("ServiceManager: %p", sm.get());
     
    AddService::instantiate();
     
    ProcessState::self()->startThreadPool();
     
    IPCThreadState::self()->joinThreadPool();
     
    }
    原文:
    Step-6 :下面写个 JNI Native 类别来使用 Add 类别之对象。透过 JNI Native 函数,就可以与 Java 层的 Service 服务衔接起来。
      

  11.   

    我觉得直接在在本机上编译出来放进去是肯定不行的
    比较简单的办法是把这个放到 android的源码目录中按照android的方式编写Android.mk然后在源码的环境中编译。
      

  12.   

    你在自己PC上gcc编译出来的应该是x86的,想丢android里运行至少也要用arm的交叉编译器编译啊。
    具体的方法网上都有的,再加上自己摸索一下以后就知道了。
      

  13.   

    要单独在android平台里面编译一下的 。写makefile
      

  14.   


    如果你不用java的话,完全不需要和JNI扯上关系。JNI是java和native C/C++直接调用的接口。
    想在Android上运行一个native的可执行文件有两种方法:
    1。 利用Android本身的Android.mk来。他会帮你做交叉编译;
    2。 下载一个gcc-arm的交叉编译的toolchain。我只试过第一种方法,一次就成功了。具体请参考这个帖子:
    http://www.eefocus.com/article/09-04/71374s.html第二种方法请参考这个(我自己没有试过):
    http://www.linuxidc.com/Linux/2011-02/32713.htm
      

  15.   


    linux的gcc是不行的,你得下一个交叉编译器arm-none-linux-gnueabi,这样编译出来的才能在arm的设备上运行,我做过,楼主可以试下。
      

  16.   

    你把你写的源码放到Android源码里面。在Android.mk里面注明把他编译成可执行文件。然后在对应目录下mm就可以了,编译完后把out目录下对应的可执行文件push到/data/目录下。然后在/data/目录下执行即可。