我构建了zeroMQ under this instruction。 我为android创建了Xamarin项目,从nuget clrzmq包中添加并将libzmq.so文件放到文件夹中 libs-> armeabi libs-> armeabi-V7A libs-> 86
当我在真实设备上调试应用程序时。它似乎工作。 但是当我在Android emulatior x86(Genymotion)上运行应用程序时。 我捕获DllNotFoundException 并在设备日志中查看消息 找不到libzmq。
我尝试使用x86版本的库构建
- 主机= i686的-Linux的机器人
如何为android-x86架构构建zeromq?
答案 0 :(得分:5)
我有类似的问题,请参阅
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
如上所示,我使用了NDK的r5b版本,并构建了ZeroMQ 2.1.11。我还记得UUID需要构建并用于ZeroMQ 2,但我认为这已经在ZeroMQ 3中出现了。
我不记得哪个版本的x86工作不幸,但它可能会给你一个起点。
希望这有帮助
答案 1 :(得分:1)
首先,确保为x86创建了正确的独立工具链,尝试根据以下文章为x86构建ZeroMQ:
在英特尔®x86平台上为Android *应用程序编译ZeroMQ库 https://software.intel.com/en-us/articles/compiling-zeromq-library-for-android-applications-on-intel-x86-platforms