Compiling SDL2 for Android

I am trying to compile SDL2 for Android on Ubuntu.

I am setting up SDL2 with. / configure --host = arm-linux-androideabi

After compiling using ndk-build, I get a series of undefined links:

Compile thumb : SDL2-2.0.0 <= SDL_androidkeyboard.c Compile thumb : SDL2-2.0.0 <= SDL_androidtouch.c Compile thumb : SDL2-2.0.0 <= SDL_androidvideo.c Compile thumb : SDL2-2.0.0 <= SDL_androidwindow.c SharedLibrary : libSDL2-2.0.0.so /home/ire018/Applications/android-ndk-r9/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: /home/ire018/workspace/SDLActivity/obj/local/armeabi/objs/SDL2-2.0.0/src/audio/SDL_audio.o: in function bootstrap:SDL_audio.c(.data.rel.ro+0x0): error: undefined reference to 'PULSEAUDIO_bootstrap' /home/ire018/Applications/android-ndk-r9/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: /home/ire018/workspace/SDLActivity/obj/local/armeabi/objs/SDL2-2.0.0/src/audio/SDL_audio.o: in function bootstrap:SDL_audio.c(.data.rel.ro+0x4): error: undefined reference to 'DISKAUD_bootstrap' /home/ire018/Applications/android-ndk-r9/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: /home/ire018/workspace/SDLActivity/obj/local/armeabi/objs/SDL2-2.0.0/src/core/android/SDL_android.o: in function Java_org_libsdl_app_SDLActivity_onNativeResize:/home/ire018/workspace/SDLActivity/jni/SDL2-2.0.0/src/core/android/SDL_android.c:148: error: undefined reference to 'Android_SetScreenResolution' /home/ire018/Applications/android-ndk-r9/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: /home/ire018/workspace/SDLActivity/obj/local/armeabi/objs/SDL2-2.0.0/src/core/android/SDL_android.o: in function Java_org_libsdl_app_SDLActivity_onNativeKeyDown:/home/ire018/workspace/SDLActivity/jni/SDL2-2.0.0/src/core/android/SDL_android.c:155: error: undefined reference to 'Android_OnKeyDown' /home/ire018/Applications/android-ndk-r9/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: /home/ire018/workspace/SDLActivity/obj/local/armeabi/objs/SDL2-2.0.0/src/core/android/SDL_android.o: in function Java_org_libsdl_app_SDLActivity_onNativeKeyUp:/home/ire018/workspace/SDLActivity/jni/SDL2-2.0.0/src/core/android/SDL_android.c:162: error: undefined reference to 'Android_OnKeyUp' 

Any suggestions?

+6
source share
2 answers

You do not need to use β€œconfigure” if you are using the ndk-build system.

While technically possible, cross-compiling SDL2 for Android using "configure; make" (ie, the autoinformation method) is probably listening. What people do is simply use the provided Android.mk files and build directly using ndk-build (see the instructions in the Readme-android.txt file under the heading "Building the application").

+3
source

From a recently uncompressed SDL archive, I suggest just using the ndk-build to create an SDL for Android. Here is the command I'm using :

 ndk-build NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=./Android.mk \ APP_PLATFORM=android-18 

You will need to configure the APP_PLATFORM value for your configuration and make sure that you are using the Android API that GLES 2 provides.

+1
source

Source: https://habr.com/ru/post/953949/


All Articles