【问题标题】:Android cross compiling C with no configure file没有配置文件的Android交叉编译C
【发布时间】:2013-05-10 01:34:57
【问题描述】:

我最近开始为 Android 交叉编译几个 C 应用程序。我已经使用以下伪指令成功地为图像转换软件做到了这一点:

  • 构建 Android 工具链
  • 编译 Automake 和 Autoconf
  • 设置 CC 和 CXX 环境变量
  • 构建源包(删除 configure、configure.sub、configure.guess、运行autoconf configure.ac > configure、使用 arm-linux-androideabi 运行 configure with CFLAGS、make 和 make install)

我现在正在尝试为用 C 编写的 OCR 库执行此操作。我遇到的问题是该库没有 configure、configure.guess 或 configure.sub。它只有一个makefile。

我对 C 不太熟悉,但是在这种情况下我应该遵循什么不同的过程?

./configure 步骤:

CFLAGS=’-march=armv7-a –mfloat-abi=softfp’ ./configure –prefix=/home/user/Downloads/install/usr/local –host=arm-eabi –enable-shared=no –with-modules --enable-delegate-build

【问题讨论】:

    标签: android c android-ndk cross-compiling


    【解决方案1】:

    在这种情况下我应该遵循什么不同的流程吗?

    不是真的。我的意思是,如果您打算使用 Android 独立工具链,那么您需要做的就是:

    1. 使用特定目标创建工具链,例如 --platform=android-9
    2. 将工具链目录添加到PATH(方便起见)
    3. 导出 sysroot 路径,例如export SYSROOT=/tmp/my-android-toolchain/sysroot(为方便起见)
    4. 设置您的 C 编译器 (export CC="arm-linux-androideabi-gcc --sysroot $SYSROOT") 和存档器,如果您以静态库 (export AR=arm-linux-androideabi-ar) 为目标

    那么这一切都取决于你的 Makefile 是如何编写的,即目标是什么?有影响的环境变量?但实际上,如果默认目标符合您的需要,您只需运行make,同时覆盖 C 标志以设置目标架构(此处为 ARMv7):

    make CFLAGS="-march=armv7-a"
    

    就是这样。如果需要,对其他拱门(armeabix86 等)重复此操作。


    您可以在此处查看jsmn 的完整示例 - 一个用 C 编写的轻量级 JSON 解析,此处:http://git.io/ndk-jsmn

    我还有一组 slides 涵盖了您可能会发现有用的主题。

    【讨论】:

      【解决方案2】:

      根据这篇文章:What does a typical ./configure do in Linux?

      configure 仅检查系统依赖项(如果缺少它们则退出),检查您所在的系统类型,然后创建一个 makefile。因为你已经有了一个makefile,你应该已经可以执行make install了。

      【讨论】:

      • 我只是不明白这个库是如何交叉编译的。似乎 ./configure 步骤(请参阅我更新的帖子)是必要的步骤...
      • ./configure 制作 hte make 文件。当您指定一个目标时,所有这一切都是在 make install 中放置一个指令,告诉它使用哪个编译器。您可以手动添加此指令并获得相同的结果:stackoverflow.com/questions/3090224/…
      猜你喜欢
      • 1970-01-01
      • 2020-04-27
      • 2017-02-11
      • 2012-12-28
      • 1970-01-01
      • 2015-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多