0

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

  • 构建 Android 工具链
  • 编译 Automake 和 Autoconf
  • 设置 CC 和 CXX 环境变量
  • 构建源包(删除 configure、configure.sub、configure.guess、run autoconf configure.ac > configure、使用 arm-linux-androideabi 使用 CFLAGS 运行 configure、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
4

2 回答 2

0

根据这篇文章:典型的 ./configure 在 Linux 中做了什么?

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

于 2013-05-15T13:18:11.990 回答
0

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

并不真地。我的意思是,如果您打算使用 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

我还有一组幻灯片,涵盖了您可能会发现有用的主题。

于 2013-05-16T08:27:31.887 回答