【问题标题】:How to run arm binary on Android platform?如何在 Android 平台上运行 arm 二进制文件?
【发布时间】:2011-10-08 08:57:14
【问题描述】:

我想在 Android 上运行一个“hello world”程序。

它是用 C 编写的,我尝试了不同的交叉编译器。

arm-elf-gcc :当我在手机上使用 adb 键入“./hello”时,出现“分段错误”。 但是 arm-elf-gdb 正常运行 hello 程序,没有分段错误。

arm-linux-gcc : 当我在手机上输入“./hello”时,我得到“非法指令”

关于如何在手机上运行我的程序有什么想法吗?

【问题讨论】:

    标签: cross-compiling


    【解决方案1】:

    本教程似乎很好地解释了如何为 Android 构建和调试原生 C 应用程序: http://betelco.blogspot.com/2010/01/buildingdebugging-android-native-c.html

    【讨论】:

      【解决方案2】:

      首先,确保您拥有 NDK:

      http://developer.android.com/tools/sdk/ndk/index.html

      这是为您的手机编译 C 二进制文件的最简单方法:

      http://developer.android.com/tools/sdk/ndk/index.html

      http://www.kandroid.org/ndk/docs/STANDALONE-TOOLCHAIN.html

      通常$NDK(可能不同) =

      Linux:

      /home/<user>/android-ndk

      Mac OS X:

      /Users/<user>/android-ndk

      在终端:

      # create tool-chain - one line
      $NDK/build/tools/make-standalone-toolchain.sh --platform=android-3 --install-dir=/tmp/my-android-toolchain
      
      # add to terminal PATH variable
      export PATH=/tmp/my-android-toolchain/bin:$PATH
      
      # make alias CC be the new gcc binary
      export CC=arm-linux-androideabi-gcc
      
      # compile your C code(I tried hello world)
      $CC -o foo.o -c foo.c
      
      # push binary to phone
      adb push foo.o /data/local/tmp
      
      # execute binary
      adb /data/local/tmp/foo.o
      

      【讨论】:

      猜你喜欢
      • 2017-09-19
      • 1970-01-01
      • 2012-07-08
      • 1970-01-01
      • 1970-01-01
      • 2018-05-17
      • 2016-04-17
      • 2011-06-09
      • 2017-04-08
      相关资源
      最近更新 更多