Membangun SDL2 dengan toolchain NDK

drayman 02/15/2013. 1 answers, 1.561 views
android-ndk android-ndk build-process sdl automake toolchain

Saya ingin tahu apakah ada yang berhasil membangun SDL2 segar dengan toolchain dari NDK Android (r8d).

SDL2 nampaknya sangat dekat dengan rilis (sejak kemarin bukan "KONSTRUKSI BAWAH lagi: http://hg.libsdl.org/SDL/rev/0a3d2ec7af6d ). Muncul dengan Android.mk dan hanya dikompilasi dengan baik berikut ini petunjuk dalam file README.android yang dibundel.pertanyaan saya adalah apakah benar-benar tidak ada build berbasis automake yang bekerja tersedia atau akan tersedia untuk dikompilasi pada Android, atau ada yang salah dengan pengaturan toolchain saya?

Saya telah menginstal toolchain NDK mengikuti instruksi dari dokumentasi yang terletak di $ NDK / doc / STANDALONE-TOOLCHAIN.html. Saya menggunakan gcc 4.6. Inilah satu lingkungan yang saya gunakan:

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

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

Dengan konfigurasi yang sama saya berhasil membangun libjpeg-turbo v8 dan SDL_image. Skrip configure mengenali cross-compiler, dan membangun makefile, namun, ia menemukan dukungan X11, tidak dapat melihat OpenGL ES ... Make gagal:

In file included from /usr/include/features.h:378:0,
             from /usr/include/sys/types.h:27,
             from ./include/SDL_stdinc.h:35,
... 

Saya memeriksa log configure, saya tidak tahu dari mana "/ usr / include" berasal. Namun faktanya, makefile yang dihasilkan menambahkan baris tersebut dalam EXTRA_CFLAGS ke compiler. Dokumen NDK mengacu pada --with-sysroot = $ SYSROOT sebagai opsional, saya telah menyertakannya untuk melihat apakah itu menyelesaikan masalah, tetapi itu tidak membantu. Sebagai upaya terakhir saya secara manual mengedit Makefile, memperbaiki referensi itu, dan sekarang kompilator mengeluh tentang X11.h. AFAIK Android tidak ada hubungannya dengan X11, jadi saya kira seluruh build-tree benar-benar tidak cocok untuk digunakan dengan NDK.

Saya juga mencoba konfigurasi yang berbeda, yang ditemukan di utas yang lebih lama di sini . Tidak mendefinisikan -DANDROID -mandroid -fomit-frame-pointer atau mengubah kembali ke -march = armv7-a -mfloat-abi = softfp -mfpu = vfp -mthumb "memecahkan masalah.

Pada proyek sebelumnya, saya harus me-refresh config.guess, dan config.sub agar kompiler saya dikenali. SDL tampaknya tidak menggunakan itu. Selain itu, tidak ada Makefile.ac atau Makefile.am yang dilengkapi dengan SDL untuk digunakan, dan tidak ada template untuk platform lain yang dapat digunakan untuk titik awal yang baik untuk membuat makefile saya sendiri. Selain itu, saya tidak pernah berurusan dengan makefile, saya benar-benar tidak punya kesempatan untuk menyelesaikan masalah ini. Bahkan jika itu berhasil, saya mungkin akan membutuhkan alat konfigurasi juga, karena saya tidak tahu bagaimana ndk-build mengatur untuk menginstal SDL2 tanpa mengkonfigurasi skrip.

Menyusun sumber-sumber SDL dengan proyek bersama adalah satu-satunya solusi yang berhasil - tetapi jelek. Saya ingin menyebarkan file lib dan header yang diperlukan dengan melakukan instalasi.

Saya harap solusinya adalah sesuatu yang sangat mudah dan jelas yang tidak saya pikirkan ...

1 Answers


Masalah ini telah diperbaiki di http://hg.libsdl.org/SDL/rev/4e57cfd9fca8 dan diharapkan untuk rilis 2.0.4. Perhatikan ada revisi yang lebih baru dengan beberapa perbaikan terkait tentang definisi.

Related questions

Hot questions

Language

Popular Tags