Android ndk 使用NDK工具链构建SDL2

Android ndk 使用NDK工具链构建SDL2,android-ndk,build-process,sdl,automake,toolchain,Android Ndk,Build Process,Sdl,Automake,Toolchain,我想知道是否有人用Android NDK(r8d)的工具链构建了新的SDL2 SDL2似乎离发行版非常接近(因为昨天它不再“处于建设之中:)。它附带一个Android.mk,只需按照捆绑的README.Android文件中的说明进行编译即可。我的问题是,是否真的没有基于automake的版本可用或将在Android上进行编译,或者我的工具链设置有问题 我已经按照$NDK/doc/STANDALONE-toolchain.html上的文档说明安装了NDK工具链。我使用的是gcc 4.6。我使用的一

我想知道是否有人用Android NDK(r8d)的工具链构建了新的SDL2

SDL2似乎离发行版非常接近(因为昨天它不再“处于建设之中:)。它附带一个Android.mk,只需按照捆绑的README.Android文件中的说明进行编译即可。我的问题是,是否真的没有基于automake的版本可用或将在Android上进行编译,或者我的工具链设置有问题

我已经按照$NDK/doc/STANDALONE-toolchain.html上的文档说明安装了NDK工具链。我使用的是gcc 4.6。我使用的一个环境是:

#!/bin/sh
export TOOLCHAIN=$HOME/Android/android-14-arm
export PATH=$TOOLCHAIN/bin:$PATH
export SYSROOT=$TOOLCHAIN/sysroot
export CROSS_COMPILE="arm-linux-androideabi"
export CC=$CROSS_COMPILE-gcc
export CXX=$CROSS_COMPILE-g++
export CPP=$CROSS_COMPILE-cpp
export CFLAGS="-march=armv7-a -mfloat-abi=softfp -mfpu=neon"
export LDFLAGS="-march=armv7-a -Wl,--fix-cortex-a8"
echo "Compiler set up for ARM 14"
配置参数:

./configure --host=arm-linux-androideabi --prefix=$SYSROOT/usr/local
使用相同的配置,我成功构建了libjpegturbov8和SDL_图像。 配置脚本识别交叉编译器,并构建makefile,但是,它发现X11支持,无法看到OpenGL ES…make失败:

In file included from /usr/include/features.h:378:0,
             from /usr/include/sys/types.h:27,
             from ./include/SDL_stdinc.h:35,
...
我查看了配置日志,不知道“/usr/include”来自何处。 但事实上,生成的makefile在额外的\u CFLAGS中将该行添加到编译器中。 NDK文档引用--with sysroot=$sysroot作为可选项,我将其包括在内以查看它是否解决了问题,但这没有帮助。 作为最后一项工作,我手动编辑了Makefile,修复了该引用,现在编译器抱怨X11.h。 AFAIK Android与X11无关,所以我猜整个构建树完全不适合与NDK一起使用

我还尝试了一种不同的配置,可以在一个旧线程中找到。 无论是定义-DANDROID-mandroid-fomit帧指针还是更改回-march=armv7-a-mfloat abi=softfp-mfpu=vfp-mthumb“都不能解决问题

在以前的项目中,我必须刷新config.guess和config.sub以使编译器被识别。SDL似乎不使用这些。此外,SDL中没有Makefile.ac或Makefile.am可供使用,也没有其他平台的模板可作为创建我自己的Makefile的良好起点。此外,我从未处理过makefile,我真的没有机会解决这些问题。即使成功,我也可能需要一个配置工具,因为我不知道ndk build如何在没有配置脚本的情况下安装SDL2

将SDL源代码与项目一起编译是唯一可行但难看的解决方案。我想通过makeinstall部署必要的lib和头文件


我希望这个解决方案是非常简单和明显的事情,我只是没有想到

此问题已在2.0.4版本中修复,预计将在2.0.4版本中解决。请注意,有一些较新的修订版,其中包含一些有关定义的相关修复。

错误片段并不是真正的错误。您没有输入错误,而其中包含的只是包含错误的文件;make在理论上应该可以工作,但是没有一个开发人员这样构建它,这就是它被窃听的原因。请随时向Bugzilla报告您发现的任何bug(以及补丁!),如果您想尝试的话,可以尝试的一件事是运行configure,然后在SDL_config.h的基础上复制include/SDL_config_android.h,然后运行make,这可能会起作用(SDL_config_android.h是android的预煮配置头,应该有健全的设置)。