Android NDK返回错误“未定义对'rand'的引用”

战车2005

我正在尝试使用libvpx用于Android x86的webm装饰器

我通过遵循以下命令构建了库,并得到了“ libvpx.a”。

../configure --target=x86-android-gcc --disable-vp8-encoder --disable-vp9-encoder --disable-examples --sdk-path=$ANDROID_NDK_ROOT --enable-pic --enable-postproc

当我在Windows上通过ndk-build使用该库时,发生了错误。

C:/android/[project]/jni/../plib/libvpx.a(postproc_mmx.asm.o)(.text+0x1c8): error: undefined reference to 'rand'
C:/android/[project]/jni/../plib/libvpx.a(postproc_sse2.asm.o)(.text+0x65c): error: undefined reference to 'rand'
collect2.exe: error: ld returned 1 exit status

用于armeabi的libvpx.a没有发生错误。有人不知道解决方法吗?

(jni / Android.mk)

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE := sublib
LOCAL_SRC_FILES := sublib.cpp

LOCAL_LDLIBS := -llog

LOCAL_STATIC_LIBRARIES := libvpx_pre

include $(BUILD_SHARED_LIBRARY)

include $(LOCAL_PATH)/../plib/Android_x86.mk

(plib / Android_x86.mk)

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE := libvpx_pre
LOCAL_SRC_FILES := libvpx.a
LOCAL_STATIC_LIBRARIES := cpufeatures

include $(PREBUILT_STATIC_LIBRARY)

$(call import-module,android/cpufeatures)
姆斯托舍

与(来自主题的)最初印象相反,这不是(直接)不能加载库的副本:reloc_library [1285]:无法找到'rand'

看来,使用配置libvpx时--target=x86-android-gcc,它实际上并不会自动选择android编译器或尝试使用android标头(与其对标相反armv7-android-gcc)。(实际上,如果您--target=x86-android-gcc在OS X上进行编译,它甚至不生成linux / android二进制文件,最终将为OS X生成二进制文件。)

取而代之的是,它使用普通的系统编译器以通常的方式构建,并带有普通的系统标头(除非您手动指定它们),标头包含普通的rand函数,而Android上则不提供。(在Android 5.0之前的版本中,randin函数stdlib.h是一个内联函数,实际上会映射到该lrand48函数,二进制文件最终链接到函数)。

(另外,在为手臂构建android时,似乎不允许您选择要定位的android版本,因此,如果您的NDK包含android-21,似乎它将尝试以此构建,这可以也给您类似的错误,例如在无法加载库中:reloc_library [1285]:无法找到'rand'。)

由于configure script magic似乎没有为x86 android构建所需的正确设置(就像对arm一样),因此您应该可以自己进行设置,这需要设置更多参数:

export PATH=<NDK>/toolchains/x86-4.8/prebuilt/*x86*/bin:$PATH
ASFLAGS="-D__ANDROID__" CROSS=i686-linux-android- LDFLAGS="--sysroot=<NDK>/platforms/android-9/arch-x86" ./configure --target=x86-android-gcc --extra-cflags="--sysroot=<NDK>/platforms/android-9/arch-x86" --disable-examples
make

有了这个,我就能建立一个libvpx.a应该针对正确的标头建立的,希望对您来说可以正常工作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Android NDK:未定义的引用错误

来自分类Dev

Android NDK:对“ stderr”的未定义引用

来自分类Dev

Android NDK链接器错误:错误:对std :: basic_string的未定义引用

来自分类Dev

Android NDK链接器错误:错误:对std :: basic_string的未定义引用

来自分类Dev

Android NDK-build中的libpcap静态链接错误(对pcap API的未定义引用)

来自分类Dev

建立Android NDK库无法解决“未定义的引用”错误

来自分类Dev

如何解决Android NDK中的“对'ntohl'的未定义引用”编译错误?

来自分类Dev

链接器错误Android-NDK:对“ G_STATIC_ASSERT”的未定义引用

来自分类Dev

Android:错误:对“ android_atomic_dec”的未定义引用

来自分类Dev

Android:错误:对“ android_atomic_dec”的未定义引用

来自分类Dev

Android NDK-Android Studio Gradle对__android_log_write的未定义引用

来自分类Dev

将 Android 项目(未定义的引用)中的 Boost::regex 与 crystax ndk 链接时出错

来自分类Dev

错误:()对`__android_log_write'的未定义引用错误?

来自分类Dev

Android Studio | CPP文件错误错误:位图库中未定义对“ AndroidBitmap_unlockPixels”的引用

来自分类Dev

Android NDK项目中的未定义参考错误

来自分类Dev

在Android上构建的Git引发“对dlopen的未定义引用”错误

来自分类Dev

使用独立工具链为 android 构建鱿鱼时出现未定义的引用错误

来自分类Dev

在Android中对'cv :: initModule_nonfree()'的未定义引用

来自分类Dev

Android链接器:对bsd_signal的未定义引用

来自分类Dev

未定义对'__android_log_print'的引用

来自分类Dev

Android 4.4,对__printf_chk的未定义引用

来自分类Dev

在Android中使用JNI对'multiply'的未定义引用

来自分类Dev

对解压缩 zlib android jni 的未定义引用

来自分类Dev

Android NDK:未定义的参考

来自分类Dev

编译错误:未定义引用

来自分类Dev

未定义的函数错误引用

来自分类Dev

错误对“ WinMain @ 16”的未定义引用

来自分类Dev

无法解决“对...的未定义引用”错误

来自分类Dev

编译错误:未定义引用

Related 相关文章

  1. 1

    Android NDK:未定义的引用错误

  2. 2

    Android NDK:对“ stderr”的未定义引用

  3. 3

    Android NDK链接器错误:错误:对std :: basic_string的未定义引用

  4. 4

    Android NDK链接器错误:错误:对std :: basic_string的未定义引用

  5. 5

    Android NDK-build中的libpcap静态链接错误(对pcap API的未定义引用)

  6. 6

    建立Android NDK库无法解决“未定义的引用”错误

  7. 7

    如何解决Android NDK中的“对'ntohl'的未定义引用”编译错误?

  8. 8

    链接器错误Android-NDK:对“ G_STATIC_ASSERT”的未定义引用

  9. 9

    Android:错误:对“ android_atomic_dec”的未定义引用

  10. 10

    Android:错误:对“ android_atomic_dec”的未定义引用

  11. 11

    Android NDK-Android Studio Gradle对__android_log_write的未定义引用

  12. 12

    将 Android 项目(未定义的引用)中的 Boost::regex 与 crystax ndk 链接时出错

  13. 13

    错误:()对`__android_log_write'的未定义引用错误?

  14. 14

    Android Studio | CPP文件错误错误:位图库中未定义对“ AndroidBitmap_unlockPixels”的引用

  15. 15

    Android NDK项目中的未定义参考错误

  16. 16

    在Android上构建的Git引发“对dlopen的未定义引用”错误

  17. 17

    使用独立工具链为 android 构建鱿鱼时出现未定义的引用错误

  18. 18

    在Android中对'cv :: initModule_nonfree()'的未定义引用

  19. 19

    Android链接器:对bsd_signal的未定义引用

  20. 20

    未定义对'__android_log_print'的引用

  21. 21

    Android 4.4,对__printf_chk的未定义引用

  22. 22

    在Android中使用JNI对'multiply'的未定义引用

  23. 23

    对解压缩 zlib android jni 的未定义引用

  24. 24

    Android NDK:未定义的参考

  25. 25

    编译错误:未定义引用

  26. 26

    未定义的函数错误引用

  27. 27

    错误对“ WinMain @ 16”的未定义引用

  28. 28

    无法解决“对...的未定义引用”错误

  29. 29

    编译错误:未定义引用

热门标签

归档