【问题标题】:Google-NDK / Compiling command-line C applications without any JNI interactionGoogle-NDK / 在没有任何 JNI 交互的情况下编译命令行 C 应用程序
【发布时间】:2011-06-24 18:31:16
【问题描述】:

Android-NDK 主要用于编写/移植原生库,可以通过 JNI 机制从 Java 调用。

我有一个嵌入 Android 的基于 ARM 的评估板。此评估板有一个串行端口,因此我可以使用远程终端登录,然后启动命令或其他应用程序(“命令行应用程序”-非 Java 应用程序)。

我想知道 Android NDK 是否可以编译“纯”C 应用程序,我稍后将在远程 shell 上将其用作命令?主要思想是利用 Google-NDK 提供的工具链来构建从不与 Dalvik 机器交互的代码。

最好的问候, 苹果92

【问题讨论】:

  • 其实最新的NDK里面有一个新特性。您可以生成自己的工具链并从任何 Makefile 中调用它。

标签: c android-ndk


【解决方案1】:

Hello World C program using Android Toolchain是一篇解释如何使用android工具链编译的文章。我认为它对你有用。

【讨论】:

    【解决方案2】:

    是的,您可以使用 NDK 编译命令行程序。如果您查看任何运行良好的 Android 系统,您会发现许多使用相同编译器编译的命令行程序示例。

    【讨论】:

    • 你有这些例子的链接吗?
    • 刚刚偶然发现与 user255607 相同的问题,虽然这个答案在技术上是正确的,但它也完全没有价值。
    • @hirschhornsalz 因为没有问题被问到可以更详细地回答,我认为你的评论也是毫无价值的。您已经存在了足够长的时间,知道必须提出问题,而不是假设问题。最初提出的问题得到了回答。如果您觉得我的回答没有用,请指出我忽略了问题的哪一部分。
    【解决方案3】:

    是的,有 BUILD_EXECUTABLE 命令,它的作用类似于 BUILD_SHARED_LIBRARY 但会生成可执行文件。 诀窍是你的可执行文件所依赖的库——它们要么需要已经在设备上(/system/bin),要么你必须将它们与你的可执行文件一起上传。

    我想出了以下脚本来上传和执行测试:

    #!/bin/sh
    
    adb shell rm -r /data/temp
    adb shell mkdir /data/temp
    
    for i in dst/* 
    do
      adb push ${i} /data/temp
    done
    
    cat <<EOF | adb shell
    LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/data/temp
    /data/temp/test
    exit
    EOF
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-27
      • 2016-04-17
      相关资源
      最近更新 更多