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

时间:2014-04-23 09:53:02

标签: android c++ c android-x86

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

  

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

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

  

包括$(CLEAR_VARS)
  LOCAL_MODULE:= vpx
  LOCAL_SRC_FILES:= thirdparty / webm / libvpx / $(TARGET_ARCH_ABI)/ libvpx.a
  包括$(PREBUILT_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 +0 x568):错误:未定义引用' __ vsnprintf_chk'
  jni / thirdparty / webm / libvpx / x86 / libvpx.a(vp8_dx_iface.co)(。text +0 x596):错误:未定义引用' __ longjmp_chk'
  jni / thirdparty / webm / libvpx / x86 / libvpx.a(onyxd_if.co)(。text +0 x158):错误:未定义引用' __ vsnprintf_chk'
  jni / thirdparty / webm / libvpx / x86 / libvpx.a(onyxd_if.co)(。text +0 x186):错误:未定义引用' __ 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(yv12extend.co):function vp8_yv12_extend_frame_borders_c:error:undefined reference to' __ assert_fail'
  jni / thirdparty / webm / libvpx / x86 / libvpx.a(yv12extend.co):function vp8_yv12_extend_frame_borders_c:error:undefined reference to' __ assert_fail'
  jni / thirdparty / webm / libvpx / x86 / libvpx.a(yv12extend.co):function vp8_yv12_extend_frame_borders_c:error:undefined reference to' __ assert_fail'
  jni / thirdparty / webm / libvpx / x86 / libvpx.a(decodframe.co)(。text +0 x198):错误:未定义引用' __ 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 +0 x55):错误:未定义引用' __ 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-fexceptions
  APP_CFLAGS + = -Wno-error = format-security
  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

1 个答案:

答案 0 :(得分:3)

我添加--extra-cflags="-U_FORTIFY_SOURCE"涵盖__longjmk_chk__vsnprintf_chk

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