【问题标题】:Linker error Android - ndk :undefined reference to `G_STATIC_ASSERT'链接器错误 Android - ndk:未定义对“G_STATIC_ASSERT”的引用
【发布时间】:2015-09-15 08:35:32
【问题描述】:

我正在为 arm64-v8 构建 android 项目,我正在使用 NDK-r10e。我已经使用它的依赖项(Glib 2.35.8)构建了构建 Libnice 0.13,并且我已经编译了 Glib 的所有依赖项(intl,iconv,ffi )。 所以我成功地构建了 Glib 的静态库,然后使用我的 glib 库构建了一个 Libnice 静态库。 现在我正在使用这些静态库来构建我的 android 项目,我收到以下错误,我不知道为什么它会给我这个链接器错误,因为在构建这些库时,一切对我来说都很好。

libnice.a(pseudotcp.o): In function `pseudo_tcp_socket_get_type':
/Users/aagman/Desktop/LibNIce/libnic/Newlibnice/jni/files/agent/pseudotcp.c:78:  undefined reference to `G_STATIC_ASSERT'

In function `nice_agent_get_type':
/Users/aagman/Desktop/LibNIce/libnic/Newlibnice/jni/files/agent/agent.c:85:      undefined reference to `G_STATIC_ASSERT'
/Users/aagman/Desktop/LibNIce/libnic/Newlibnice/jni/files/agent/agent.c:85:  undefined reference to `G_STATIC_ASSERT'

【问题讨论】:

  • 您正在为什么平台构建以及您是如何构建 libnice.so 的? [arm64-v8a] 是 ARM 64 位。您的其余代码是否也针对 64 位 ARM-v8,否则链接器将失败,因为二进制文件不兼容
  • 我正在为 ARM 64 构建,我只为 ARM64 构建了我的 libnice.so,并且我使用了为 ARM 64 构建的所有 libnice 依赖项。

标签: android android-ndk glib libnice


【解决方案1】:

如果为 64 位构建传递了“无符号整数”的地址,则会发生此错误,这对于 32 位构建是可以的,但对于 64 位应该是无符号长整数。在命令行中通过 -m64 / -m32 来控制构建目标。

【讨论】:

    猜你喜欢
    • 2016-11-11
    • 2012-03-02
    • 2013-05-07
    • 2018-06-02
    • 2019-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多