使用NDK工具链构建SDL2
我想知道是否有人通过Android NDK工具链(r8d)设法构建了新的SDL2。使用NDK工具链构建SDL2
SDL2似乎是非常接近的版本(因为昨天它不是“UNDER CONSTROCTION了:http://hg.libsdl.org/SDL/rev/0a3d2ec7af6d)。它配备了一个Android.mk,只是编译以下罚款在捆绑README.android文件中的指令。我的问题是,是否真的没有工作automake的基础构建可用或将可用来编译它在Android,或有什么地方错了我的工具链的设置?
我已经安装了下列位于$文件的指示NDK工具链NDK/doc/STANDALONE-TOOLCHAIN.html。我正在使用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"
的配置PARAMS:
./configure --host=arm-linux-androideabi --prefix=$SYSROOT/usr/local
使用相同的配置我成功构建的libjpeg涡轮增压V8发动机和SDL_image。 配置脚本识别交叉编译器,并建立makefile文件,但是,它发现X11的支持,不能看到的OpenGL ES ......本作失败:
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将EXTRA_CFLAGS中的那行添加到编译器中。 NDK doc引用--with-sysroot = $ SYSROOT作为可选项,我已经将它包含在内以查看它是否可以解决问题,但这没有帮助。 作为最后的努力,我手动编辑了Makefile,修复了这个引用,现在编译器抱怨了X11.h. AFAIK Android与X11无关,所以我猜想整个构建树完全不适合与NDK一起使用。
我也尝试了不同的配置,发现在一个较旧的线程here。 既不限定-DANDROID -mandroid -fomit帧指针也不变回-march = ARMv7的-一个-mfloat-ABI = softfp -mfpu = VFP -mthumb”解决了这个问题。
在之前的项目,我有刷新config.guess和config.sub以便让我的编译器识别SDL似乎没有使用这些,而且没有Makefile.ac或Makefile.am与SDL一起使用,并且没有其他平台的模板可以使用用于创建我自己的makefile的一个很好的起点,另外,我从来不需要处理makefile,我真的没有机会解决这些问题,即使成功,我也可能需要一个配置工具,因为我不知道ndk-build如何在没有配置脚本的情况下安装SDL2。
与项目一起编译SDL源代码是唯一可行的 - 但很难看的解决方案。我想通过make install来部署必要的lib和头文件。
我希望的解决方案是什么,我只是没想到真的很容易和明显的事情......
错误代码段不是真的错误。您错过了放入错误的信息,并且其中的所有内容都是包含错误的文件。 – Samveen 2013-08-09 04:54:41
使用configure;构建SDL2 make应该在理论上工作,但是没有一个开发人员会这样做,这就是为什么它被窃听的原因。随意报告你发现的任何错误(和补丁!)到Bugzilla https://bugzilla.libsdl.org 有一件事你可以尝试,如果你想尝试一下,就是运行configure,之后在SDL_config.h的顶部包含/ SDL_config_android.h,然后运行make,或许这是有效的(SDL_config_android.h是一个适合Android的预编译头文件,它应该有相同的设置)。 – gabomdq 2013-09-20 13:35:19