【发布时间】:2014-11-26 12:02:33
【问题描述】:
我已经成功通过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)
任何从我构建的库的共享库路径中获取此路径的帮助都会很棒!谢谢!
【问题讨论】:
标签: android c++ qt android-ndk cmake