android开发分享ndk编译error: undefined reference to ‘fegetenv‘

导读在使用Android studio的CMake重新编译OpenCV的时候报/build/master_pack-android/build/o4a/3rdparty/tbb/tbb-2018_U1/src/tbb/scheduler_common.h:431: error: undefined reference to ‘fegetenv’/build/master_pack-android/build/o4a/3rdparty/tbb/tbb-2018_U1/src/tbb/scheduler


导读

在使用Android studio的CMake重新编译OpenCV的时候报

/build/master_pack-android/build/o4a/3rdparty/tbb/tbb-2018_U1/src/tbb/scheduler_common.h:431: error: undefined reference to ‘fegetenv’
/build/master_pack-android/build/o4a/3rdparty/tbb/tbb-2018_U1/src/tbb/scheduler_common.h:435: error: undefined reference to ‘fesetenv’
clang++.exe: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [build/intermediates/ndk/obj/local/armeabi-v7a/libinitializer.so] Error 1

编译环境

  • ndk:r21b
  • OpenCv:4.4.0

起因

在封装Android SDK的时候底层c++项目需要用到opencv,直接使用opencv编译好的so库,导致编译出来的apk包太大。而实际底层使用的时候,并不是opencv所有的功能都使用到,所以想对opencv没用到的功能做一些剔除。
通过配置CMake文件来重新编译OpenCV库,在编译时的时候提示OpenCV依赖的一个第三方库图报上面的错误。

解决办法

修改app下面的build.gradle文件,将defaultConfig配置项中的最小Android版本改成如下配置

compileSdkVersion = 28 targetSdkVersion = 28 minSdkVersion = 21 

如果使用的是mk的方式进行编译的,在Application.mk文件中添加

APP_PLATFORM := android-21 

参考:https://github.com/opencv/opencv/issues/14419

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/addevelopment/895196.html

(0)
上一篇 2021年10月21日
下一篇 2021年10月21日

精彩推荐