使用libvpx x86 android构建项目失败,出现未定义的引用错误

Build project with libvpx x86 android fail with undefined reference error

本文关键字:未定义 错误 引用 失败 x86 libvpx android 构建 项目 使用      更新时间:2023-10-16

我需要添加对android项目原子处理器的支持。在x86下配置和构建libvpx库,参数为:

/configure--disable examples--sdk path='/Android/ndk'--enable-vp8--target=x86 Android gcc--disable postdoc
制作

构建成功后,我得到了一个静态库libvpx.a将库添加到项目:

包括$(CLEAR_VARS)
LOCAL_MODULE:=vpx
LOCAL_SRC_FILES:=thirdparty/webm/libvpx/$(TARGET_ARCH_ABI)/libvpx.a
包括$(预建_STATIC_LIBRARY)

LOCAL_STATIC_LIBRARIES:=stdc++jpeg png vorbis vorbisfile vorbisenc theora theoradec libwebp vpx

但在项目的组装过程中出现了错误:

jni/thirdparty/webm/libvpx/x86/libvpx.a(vp8_dx_iface.co)(.text+0x568):错误:未定义对'__vsnprintf_chk'的引用
jni/thirdparty/webm/libvpx/x86/libvpx.a(vp8_dx_iface.co)(.text+0x596):错误:未定义对'__longjmp_chk'的引用
jni/thirdparty/webm/libvpx/x86/libvpx.a(onyxd_if.co)(.text+0x158):错误:未定义对'__vsnprintf_chk'的引用
jni/thirdparty/webm/libvpx/x86/libvpx.a(onyxd_if.co)(.text+0x186):错误:未定义对'__longjmp_chk'的引用
jni/thirdparty/webm/libvpx/x86/libvpx.a(onyxd_if.co)(.text.unlikely+0 x23):错误:未定义对'__assert_fail'的引用
jni/thirdparty/webm/libvpx/x86/libvpx.a(yv12.extend.co):函数vp8_yv12_extend_frame_borders_c:错误:未定义对'__assert_fail'的引用
jni/thirdparty/webm/libvpx/x86/libvpx.a(yv12.extend.co):函数vp8_yv12_extend_frame_borders_c:错误:未定义对'__assert_fail'的引用
jni/thirdparty/webm/libvpx/x86/libvpx.a(yv12.extend.co):函数vp8_yv12_extend_frame_borders_c:错误:未定义对'__assert_fail'的引用
jni/thirdparty/webm/libvpx/x86/libvpx.a(decodframe.co)(.text+0x198):错误:未定义对'__vsnprintf_chk'的引用
jni/thirdparty/webm/libvpx/x86/libvpx.a(decodframe.co)(.text+0 x1c6):错误:未定义对'__longjmp_chk'的引用
jni/thirdparty/webm/libvpx/x86/libvpx.a(boolhuff.co)(.text+0x55):错误:未定义对'__longjmp_chk'的引用
jni/thirdparty/webm/libvpx/x86/libvpx.a(onyx_if.co)(.text+0 xa08):错误:未定义对'__vsnprintf_chk'的引用

有人知道怎么修吗?armeabi下的构建项目成功。尝试添加标志APP_CPPFLAGS+=-std=gnu++11并更改ndk 的版本

NDK_TOOLCHAIN_VERSION:=4.8

项目的其他标志:

APP_STL:=gnustl_static
APP_CPPFLAGS+=-frtti异常
APP_CFLAGS+=-Wno错误=格式安全
APP_ABI:=armeabi x86

用于构建ndk android-ndk-r9d-linux-x86(我尝试使用android-ndk-r9d-linux-x86_64-相同的结果),Ubuntu 13.10 x86_64,Eclipse 3.8.1

对于我来说,添加--extra-cflags="-U_FORTIFY_SOURCE"覆盖的__longjmk_chk__vsnprintf_chk

我写了空的__assert_fail函数:extern "C" { void __assert_fail() {} }