ammcom ammcom - 4 months ago 36
C Question

Android ndk cannot find symbol "sigemptyset"

I am building a C app for android, I use 'sigemptyset' in my app, when I compile the code using NDK it is compiled successfully, but when running the app I get

cannot locate symbol 'sigemptyset'
.

After searching I found that the problem is that I build the app using ndk-r11 which build for android-5 but I am running the app on android 4.4 where
sigemptyset
definition has changed. so I added the following to Android.mk:

TARGET_PLATFORM := android-19


but I still get the same error

Does anyone know how to fix this?

EDIT:

This question is not a duplicate of another question nor the answer there suggests changing the
APP_PLATFORM
parameter in Application.mk

Answer

The cause of problem is not the version of NDK that was used but version of target platform. android-19 is the last platform version where sigemptyset() (and many other functions) was declared as inline just at platform headers. As result - system libc on that devices doesn't contain such functions. So you are right - you should use proper target platform to allow your code to run on older devices. But you are doing it incorrectly. All that you need is add

APP_PLATFORM := android-19

to your Application.mk.