【问题标题】:ZeroMQ build for Android emulator x86ZeroMQ 为 Android 模拟器 x86 构建
【发布时间】:2014-04-11 14:11:39
【问题描述】:

我构建 zeroMQ under this instruction。 我为 android 创建 Xamarin 项目,从 nuget clrzmq 包添加并将 libzmq.so 文件放入文件夹
库-> armeabi 库-> armeabi-v7a 库->x86

当我在真实设备上调试应用程序时。它似乎正在工作。 但是当我在 Android 模拟器 x86 (Genymotion) 上运行应用程序时。 我抓住了 DllNotFoundException 并在设备日志中查看消息 未找到 libzmq。

我尝试使用 x86 版本的库作为构建

--host=i686-linux-android

如何为 android-x86 架构构建 zeromq?

【问题讨论】:

    标签: android xamarin zeromq


    【解决方案1】:

    我有类似的问题,请参阅

    Mono Android Monodroid Native Library DllNotFoundException

    我的问题归结为我使用的 NDK 版本 - 旧版本似乎效果更好。

    编辑:

    好久没有搭建Android版ZeroMQ了,终于找到了自己搭建的Ubuntu虚拟机,找到了搭建时的shell历史:

    623 pwd 624 cd zeromq-2.1.11/ 625 make clean 626 ./configure --target=x86 --host=x86 LDFLAGS="-L/opt/android-root/lib" CPPFLAGS="-I/opt/android-root/include" --prefix=/opt/android-root 627 ./configure LDFLAGS="-L/opt/android-root/lib" CPPFLAGS="-I/opt/android-root/include" --prefix=/opt/android-root 628 ./configure --target=x86 LDFLAGS="-L/opt/android-root/lib" CPPFLAGS="-I/opt/android-root/include" --prefix=/opt/android-root 629 which diff 630 cp config.status config.status.x86 631 ./configure LDFLAGS="-L/opt/android-root/lib" CPPFLAGS="-I/opt/android-root/include" --prefix=/opt/android-root 632 diff config.status config.status.x86 633 ./configure --target=x86 --host=x86 LDFLAGS="-L/opt/android-root/lib" CPPFLAGS="-I/opt/android-root/include" --prefix=/opt/android-root 634 ./configure --host=x86 LDFLAGS="-L/opt/android-root/lib" CPPFLAGS="-I/opt/android-root/include" --prefix=/opt/android-root 635 ./configure --target=x86 LDFLAGS="-L/opt/android-root/lib" CPPFLAGS="-I/opt/android-root/include" --prefix=/opt/android-root 636 make 637 sudo make install

    1174 sudo android-ndk-r5b/build/tools/make-standalone-toolchain.sh --platform=android-5 --install-dir=/opt/android-toolchain 1175 cd /opt 1176 ls 1177 ls -l 1178 ls 1179 export PATH=/opt/android-toolchain/bin:$PATH 1180 cd 1181 cd e2fsprogs/ 1182 ./configure -target=arm-linux-androideabi -host=arm-linux-androideabi -prefix=/opt/android-root 1183 make clean 1184 make 1185 make clean 1186 cd lib 1187 cd uuid/ 1188 make 1189 sudo make install 1190 cd 1191 cd zeromq-2.1.11/ 1192 ./configure -target=arm-linux-androideabi -host=arm-linux-androideabi LDFLAGS="-L/opt/android-root/lib" CPPFLAGS="-I/opt/android-root/include" -prefix=/opt/android-root 1193 make clean 1194 make 1195 sudo make install

    如上所示,我使用了 r5b 版本的 NDK,并构建了 ZeroMQ 2.1.11。我还记得需要为 ZeroMQ 2 构建和使用 UUID,但我认为这在 ZeroMQ 3 中有所改变。

    不幸的是,我不记得哪个版本的 x86 可以工作,但它可能会给你一个起点。

    希望对你有帮助

    【讨论】:

    • 你能告诉我更具体的吗?使用 ./configure 需要执行哪些标志?我尝试使用 Ndk 9,并按照网站 (zeromq.org/build%3aandroid) 上的说明进行所有操作。如果不难,请展示一个构建正确库的示例脚本。谢谢!
    • 在库存在期间,没有人在文档或任何博客文章中描述其与 Xamarin 一起使用的场景,这也很奇怪。不管是什么,谢谢。
    【解决方案2】:

    首先,请确保您已经为 x86 创建了正确的独立工具链,尝试按照以下文章为 x86 构建 ZeroMQ:

    为英特尔® x86 平台上的 Android* 应用程序编译 ZeroMQ 库 https://software.intel.com/en-us/articles/compiling-zeromq-library-for-android-applications-on-intel-x86-platforms

    【讨论】:

      猜你喜欢
      • 2012-01-30
      • 1970-01-01
      • 2021-08-05
      • 2010-11-06
      • 2022-11-24
      • 2020-10-22
      • 1970-01-01
      • 2013-02-27
      • 1970-01-01
      相关资源
      最近更新 更多