android cannot locate symbol 'sigemptyset'问题解决

Posted yuanxiaoping_21cn_com

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android cannot locate symbol 'sigemptyset'问题解决相关的知识,希望对你有一定的参考价值。

设备是android 4.1的平板电脑,支持armeabi-v7a和mips,为了能用上poco c++ lib,用cmake编译了poco mips架构的lib,但在android studio里引用运行时就报

cannot locate symbol ‘sigemptyset‘

google了下,将

set(ANDROID_NATIVE_API_LEVEL android-21)改为
set(ANDROID_NATIVE_API_LEVEL android-16)
就ok了,如果是Application.mk文件,
APP_PLATFORM := android-16

-------------------------------------------------------

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

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.

以上是关于android cannot locate symbol 'sigemptyset'问题解决的主要内容,如果未能解决你的问题,请参考以下文章

Structure Core Depth Camera Android App UnsatisfiedLinkError: cannot locate symbol "__sfp_handl

Android NDK cannot locate symbol "__register_atfork"的一次经典定位分析~

Android NDK cannot locate symbol "__register_atfork"的一次经典定位分析~

cannot locate symbol "atof" referenced by错误分析

Cannot locate the chosen ObjectFactory implementation: spring

NDK编译库执行时报dlopen failed: cannot locate symbol "__exidx_end" 解决的方法