错误原因

使用c++写了一个关于ncnn调用深度学习模型的项目,需要部署到手机端,在Ubuntu系统下使用ndk-build来编译so库提供给Android端使用,在ndk-build的时候报了上面的错误

错误描述

absval.cpp:28: error: undefined reference to '__kmpc_global_thread_num'

absval.cpp:34: error: undefined reference to '__kmpc_push_num_threads'

编译环境

  • Ubuntu 16.04
  • ndk r21

解决办法

Android.mk文件中添加LOCAL_LDFLAGS,代码如下

LOCAL_LDFLAGS += -fopenmp -static-openmp

需要注意不同的ndk有所不同

老版本的NDK

LOCAL_LDFLAGS += -Wl,-Bstatic -lomp -Wl,-Bdynamic

参考:https://github.com/Tencent/ncnn/issues/976

https://github.com/Tencent/ncnn/issues/292

https://github.com/Tencent/ncnn/wiki/FAQ-ncnn-throw-error#undefined-reference-to-__kmpc_xyz_xyz

https://github.com/Tencent/ncnn/issues/661

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐