Android交叉编译C没有配置文件

时间:2013-05-15 13:02:34

标签: android c android-ndk cross-compiling

我最近开始为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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

  

在这种情况下,我应该遵循哪些不同的流程?

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

  1. 使用ad hoc目标创建工具链,例如--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
  5. 那么一切都取决于你的Makefile是如何编写的,即目标是什么?有影响的环境变量?但实际上,如果默认目标符合您的需要,您需要做的就是在覆盖C标志的同时运行make以设置目标体系结构(此处为ARMv7):

    make CFLAGS="-march=armv7-a"
    

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


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

    我还有一组slides,涵盖了您可能会觉得有用的主题。