【问题标题】:Can I use the NDK to build command line apps on Android?我可以使用 NDK 在 Android 上构建命令行应用程序吗?
【发布时间】:2014-12-16 01:52:10
【问题描述】:

在 Linux 机器上,我可以编写一个简单的 C 程序,用 gcc 编译它,然后从命令行执行它。我想看看我是否可以用 NDK 做类似的事情。除此之外,也许作为替代方案,是否可以使用 gcc 并为 Android 设备指定不同的编译器?我会对基于 ARM 和 x86 的 Android 设备感兴趣。

【问题讨论】:

    标签: android c++ c gcc android-ndk


    【解决方案1】:

    NDK 在“docs/STANDALONE-TOOLCHAIN.html”中包含解释如何执行此操作的文档。

    (更新:看起来最新版本的 NDK 将此文档放在 "docs/Programmers_Guide/html/md_3__key__topics__building__s_t_a_n_d_a_l_o_n_e-_t_o_o_l_c_h_a_i_n.html" 中。在浏览器中打开顶级“NDK 程序员指南”并导航到“构建/独立工具链”可能更容易部分)。

    设置指向 NDK 工具链的环境变量或创建 NDK 跨工具目录(如文档中所述)后,为 Android 环境构建 C 程序就很简单了。

    附带说明一下,该文档有两节介绍如何调用编译器:

    • 3/ 调用编译器(困难的方式)

    • 4/ 调用编译器(简单的方法)

    我发现“艰难的方式”更容易开始尝试。一旦我以这种方式执行了几次构建,​​我就使用“简单的方法”创建了一个跨工具目录,该目录更易于持续使用。

    【讨论】:

    • 我明白了,我会试试这个。目前,我没有看到 docs/STANDALONE-TOOLCHAIN.html 文件。我要重新下载 NDK。
    • 我得到了它的工作,但我不断得到魔法 7F45。找出我应该使用哪个工具链和交叉编译器的最简单方法是什么?
    • 听起来您并没有真正进行交叉编译。 file 命令对可执行文件有什么看法?
    • 您首先针对哪种设备?你选择了哪个SYSROOTarch-armarch-x86?
    • 我之前应该提过这个。该设备是运行 Lollipop 的 Nexus 5(已植根但 ro.secure 设置为 1)。我有 SYSROOT = $NDK/platforms/android-21/arch-arm 和 CC = $NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc-4.9。我在 Ubuntu 机器上执行此操作。我不确定 gcc 的版本是否重要。我看到了 4.8,还有一个没有列出版本号。
    猜你喜欢
    • 1970-01-01
    • 2020-12-19
    • 1970-01-01
    • 2013-01-25
    • 1970-01-01
    • 1970-01-01
    • 2015-08-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多