7

Android NDK(r8d)のツールチェーンを使用して新しいSDL2を構築できた人はいないでしょうか。

SDL2はリリースに非常に近いようです(昨日から「UNDERCONSTROCTION:http ://hg.libsdl.org/SDL/rev/0a3d2ec7af6d」ではありません)。Android.mkが付属しており、次のように正常にコンパイルされます。バンドルされているREADME.androidファイルの手順。私の質問は、自動作成ベースのビルドが実際に利用できないのか、Androidでコンパイルできるようになるのか、それともツールチェーンの設定に問題があるのか​​ということです。

$ NDK / doc/STANDALONE-TOOLCHAIN.htmlにあるドキュメントの指示に従ってNDKツールチェーンをインストールしました。gcc4.6を使用しています。これが私が使用する1つの環境です:

#!/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 params:

./configure --host=arm-linux-androideabi --prefix=$SYSROOT/usr/local

同じ構成で、libjpeg-turbov8とSDL_imageを正常にビルドしました。configureスクリプトはクロスコンパイラーを認識し、makefileをビルドしますが、X11サポートを検出し、OpenGLESを認識できません...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で使用するには完全に不適切だと思います。

ここの古いスレッドにある別の構成も試しました。-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を作成することはできません。さらに、私はmakefileを扱う必要がなかったので、これらの問題を解決する機会は本当にありません。成功したとしても、ndk-buildがconfigureスクリプトなしでSDL2をインストールする方法がわからないため、configureツールも必要になるでしょう。

SDLソースをプロジェクトと一緒にコンパイルすることが唯一の機能ですが、醜い解決策です。makeinstallで必要なlibファイルとヘッダーファイルをデプロイしたいと思います。

解決策が、私が考えもしなかった本当に簡単で明白なものであることを願っています...

4

1 に答える 1