我已经成功完成了 install/build instructions for OpenBR on linux
我的目标是在 android 上构建和运行 OpenBR。
经过大量的修改,我终于成功地为 armv7 构建了 OpenBR。我的问题是,当我执行“System.loadLibrary("openbr")"时出现错误:
11-25 23:40:31.221: E/dalvikvm(29742): dlopen("/data/app-lib/com.test.app-28/libopenbr.so") failed: dlopen failed: could not load library "/home/ubuntu/qt5.1.1/android_armv7/lib/libQt5Concurrent.so.5.1.1" needed by "libopenbr.so"; caused by library "/home/ubuntu/qt5.1.1/android_armv7/lib/libQt5Concurrent.so.5.1.1" not found
我相信我已经正确地包含了 armv7 libQt5Concurrent 库(在 android.mk 中加载为本地模块),但我认为问题是 libopenbr 在加载时查找了错误的目录(如错误消息中所示) .它试图在编译机器上查找路径。
在 libopenbr.so 上运行 readelf 会产生以下结果:
0x00000001 (NEEDED) Shared library: [/home/ubuntu/qt5.1.1/android_armv7/lib/libQt5Concurrent.so.5.1.1]
0x00000001 (NEEDED) Shared library: [/home/ubuntu/qt5.1.1/android_armv7/lib/libQt5Core.so.5.1.1]
0x00000001 (NEEDED) Shared library: [/home/ubuntu/qt5.1.1/android_armv7/lib/libQt5Gui.so.5.1.1]
0x00000001 (NEEDED) Shared library: [/home/ubuntu/qt5.1.1/android_armv7/lib/libQt5Network.so.5.1.1]
0x00000001 (NEEDED) Shared library: [/home/ubuntu/qt5.1.1/android_armv7/lib/libQt5Sql.so.5.1.1]
0x00000001 (NEEDED) Shared library: [/home/ubuntu/qt5.1.1/android_armv7/lib/libQt5Widgets.so.5.1.1]
0x00000001 (NEEDED) Shared library: [/home/ubuntu/qt5.1.1/android_armv7/lib/libQt5Xml.so.5.1.1]
0x00000001 (NEEDED) Shared library: [libz.so]
0x00000001 (NEEDED) Shared library: [libdl.so]
0x00000001 (NEEDED) Shared library: [libm.so]
0x00000001 (NEEDED) Shared library: [liblog.so]
0x00000001 (NEEDED) Shared library: [libc.so]
如何获取它,以便在编译时不使用此路径搜索 Qt 库?
我尝试了各种 cmake 指令,包括 openbr CMakeLists.txt 中这些变量的各种排列:
SET(CMAKE_SKIP_RPATH TRUE)
# use, i.e. don't skip the full RPATH for the build tree
SET(CMAKE_SKIP_BUILD_RPATH TRUE)
# when building, don't use the install RPATH already
# (but later on when installing)
SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
# the RPATH to be used when installing
SET(CMAKE_INSTALL_RPATH "")
# don't add the automatically determined parts of the RPATH
# which point to directories outside the build tree to the install RPATH
SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH FALSE)
如果能帮助我将此路径从我构建的库的共享库路径中移出,那就太好了!谢谢!
最佳答案
实际上我终于想出了如何通过更新每个 qt lib 的 cmake 文件来解决这个问题,使其不在文件名末尾包含版本字符串!
关于android - 将 OpenBR 编译为 ArmV7 - Android 工具链问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27148696/