gpt4 book ai didi

android-ndk - 使用 NDK 工具链构建 SDL2

转载 作者:行者123 更新时间:2023-12-04 12:48:25 28 4
gpt4 key购买 nike

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

SDL2 似乎非常接近发布(从昨天开始,它不再是“正在 build 中:http://hg.libsdl.org/SDL/rev/0a3d2ec7af6d”)。它带有一个 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

使用相同的配置,我成功构建了 libjpeg-turbo v8 和 SDL_image。
configure 脚本识别交叉编译器,并构建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 会将 EXTRA_CFLAGS 中的那一行添加到编译器中。
NDK 文档将 --with-sysroot=$SYSROOT 称为可选,我已经包含它以查看它是否解决了问题,但这没有帮助。
作为最后的努力,我手动编辑了 Makefile,修复了该引用,现在编译器提示 X11.h。
AFAIK Android 与 X11 无关,所以我猜整个构建树完全不适合与 NDK 一起使用。

我还尝试了不同的配置,在较旧的线程中找到 here .
既没有定义 -DANDROID -mandroid -fomit-frame-pointer 也没有改回 -march=armv7-a -mfloat-abi=softfp -mfpu=vfp -mthumb"解决了这个问题。

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

将 SDL 源代码与项目一起编译是唯一有效但丑陋的解决方案。我想通过 make install 部署必要的 lib 和头文件。

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

最佳答案

此问题已在 http://hg.libsdl.org/SDL/rev/4e57cfd9fca8 修复并预计在 2.0.4 版本中发布。请注意,有一些较新的修订版,其中包含一些有关定义的相关修复。

关于android-ndk - 使用 NDK 工具链构建 SDL2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14904791/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com