针对arm64架构编译SDL2

本文介绍如何使用SDL2-2.0.3版本及android-ndk-r20编译适用于Android平台的libSDL2库。通过创建并配置特定的编译脚本androidbuildlibs.sh,针对不同架构如armeabi-v7a、arm64-v8a等生成所需的动态链接库。

源码

SDL使用版本是SDL2-2.0.3(找了许久才找到的SDL2-2.0.3-Android文档类资源-优快云下载

NDK版本是android-ndk-r20

编译脚本

在SDL2-2.0.3/build-scripts下新建androidbuildlibs.sh,也可拷贝SDL2-2.0.14/build-scripts下的androidbuildlibs.sh,因为我们只想编译libSDL2,所以需要将APP_MODULES修改为“APP_MODULES="SDL2"”

# Android.mk is in srcdir
srcdir=`dirname $0`/..
srcdir=`cd $srcdir && pwd`
cd $srcdir
echo $srcdir  "---------------------"


#
# Create the build directories
#

build=build
buildandroid=$build/android
obj=
lib=
ndk_args=

# Allow an external caller to specify locations.
for arg in $*
do
  if [ "${arg:0:8}" == "NDK_OUT=" ]; then
    obj=${arg#NDK_OUT=}
  elif [ "${arg:0:13}" == "NDK_LIBS_OUT=" ]; then
    lib=${arg#NDK_LIBS_OUT=}
  else
    ndk_args="$ndk_args $arg"
  fi
done

if [ -z $obj ]; then
  obj=$buildandroid/obj
fi
if [ -z $lib ]; then
  lib=$buildandroid/lib
fi

for dir in $build $buildandroid $obj $lib; do
    if test -d $dir; then
        :
    else
        mkdir $dir || exit 1
    fi
done


# APP_* variables set in the environment here will not be seen by the
# ndk-build makefile segments that use them, e.g., default-application.mk.
# For consistency, pass all values on the command line.
ndk-build \
  NDK_PROJECT_PATH=null \
  NDK_OUT=$obj \
  NDK_LIBS_OUT=$lib \
  APP_BUILD_SCRIPT=Android.mk \
  APP_ABI="armeabi-v7a arm64-v8a x86 x86_64" \
  APP_PLATFORM=android-16 \
  APP_MODULES="SDL2" \
  $ndk_args

编译

build-scripts/androidbuildlibs.sh

编译成功之后,会在/build/android/lib下生成相应架构的库

 

SDL2.2.0.1的移植,包含SDL的每个参数的意思,包含交叉编译器的安装,包含移植过程中出错的处理方法。 --prefix=/usr/arm 安装SDL路径 --enable-shared=yes 构建共享库[开启] --enable-nasm 装配blitters x86上的nasm(汇编器) --enable-oss 启用支持oss声音的API --enable-alsa 启用支持ALSA声音的API --enable-alsa-shared 启用动态加载ALSA声卡的API --enable-pulseaudio 启用pulseaudio(脉冲音频) --enable-pulse-shared 启用动态加载脉冲音频支持 --enable-arts 启用支持Analog Read Time Synthesizer(模拟实时合成器) --enable-arts-shared 启用动态加载ARTS声卡的支持 --enable-joystick 启用joystick(控制杆)系统 --enable-cdrom 启用只读光盘系统[关闭] --enable-threads 启用多线程子系统 --enable-timers 启用计时器子系统 --enable-endian 大小端设置 --enable-file 启用文件系统 --enable-esd 支持Enlightened(文明)声音后台程序 --enable-nas 支持NAS(网络连接存储)声卡API --enable-diskaudio 支持磁盘写入声卡驱动 --enable-dummyaudio 支持虚拟声卡驱动 --enable-altivec 使用altivec装配位块传送器在PPC上 --enable-video-x11 使用x11视频驱动 --enable-dga 允许使用x1 DGA代码 --enable-video-x11-vm 使用x11 vm延长全屏 --enable-video-x11-dgamouse 使用x11 DGA鼠标事件 --enable-video-x11-xv 使用x11 xv音像延长视频 --enable-video-x11-xinerama 启动x11多银幕支持 --enable-video-dga 使用DGA2.0视频驱动 --enable-video-directfb 启用DirectFB视频驱动 --enable-video-photon 使用QNX(嵌入式实时系统)光子视频驱动 --enable-video-ps2gs 使用PS(游戏机)2 GS视频驱动 --enable-video-opengl 包括OpenGL(开放图形语言)创建上下文 --enable-video-pth 使用GNU pth库对多线程 --enable-pthreads 使用POSIX线程(可移植操作系统)对多线程 --enable-pthread-sem 使用多线程信号 --enable-input-events 使用Linux-2.4统一输入接口 --enable-input-tslib 使用Touchscreen库输入
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值