为Android模拟器x86构建ZeroMQ

4

我按照这个指南构建了zeroMQ。 我创建了一个Xamarin项目,为Android添加了nuget的clrzmq包,并将libzmq.so文件放入以下文件夹中:

  • libs->armeabi
  • libs->armeabi-v7a
  • libs->x86

当我在真实设备上调试应用程序时,它似乎可以正常工作。但是当我在Android模拟器x86(Genymotion)上运行应用程序时,我会捕获到DllNotFoundException错误,并在设备日志中看到libzmq未找到的消息。

我尝试使用以下命令构建x86版本的库:

--host=i686-linux-android

请问如何为Android-x86架构构建zeromq?

2个回答

5

我曾经遇到过类似的问题,参见Mono Android Monodroid Native Library DllNotFoundException

我的问题最终归结于我使用的NDK版本 - 旧版本似乎更好用。

编辑:

很长时间以来,我一直在构建ZeroMQ的Android版本,但最终我找到了我用来构建它的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
上述代码中,我使用了NDK的r5b版本,并构建了ZeroMQ 2.1.11。我还记得需要构建UUID并用于ZeroMQ 2,但我认为在ZeroMQ 3中已经改变了。很遗憾我不记得哪个x86版本可行,但这可能会给您一个起点。希望这有所帮助。

你能更具体地告诉我吗?./configure需要执行哪些标志?我尝试使用Ndk 9,并按照网站上的说明进行了一切操作(http://zeromq.org/build%3aandroid)。如果可以,请展示一个构建正确库的示例脚本。谢谢! - bobah75
非常奇怪的是,在这个库存在的时候,没有人在文档或任何博客文章中描述过它在Xamarin中的使用场景。无论如何,谢谢。 - bobah75

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接