首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将OpenBR编译为ArmV7 -安卓工具链问题

将OpenBR编译为ArmV7 -安卓工具链问题
EN

Stack Overflow用户
提问于 2014-11-26 20:02:33
回答 2查看 753关注 0票数 1

我已经成功地完成了install/build instructions for OpenBR on linux

我的目标是在安卓上构建并运行OpenBR。

经过大量的修改,我终于成功地为armv7构建了OpenBR。我的问题是,当我执行"System.loadLibrary("openbr")“时,我得到以下错误:

代码语言:javascript
复制
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会产生以下结果:

代码语言:javascript
复制
 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中这些变量的各种排列:

代码语言:javascript
复制
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)

从我构建的库的共享库路径中获取此路径的任何帮助都将是非常好的!谢谢!

EN

回答 2

Stack Overflow用户

发布于 2014-12-02 09:26:10

实际上,我终于想出了如何修复这个问题,方法是更新每个qt lib的cmake文件,使其不在文件名末尾包含版本字符串!

票数 1
EN

Stack Overflow用户

发布于 2014-11-26 21:05:05

在使用System.loadLibrary()加载动态库时,您需要首先打开所有依赖项,因为System.loadLibrary()不会为您加载它们。

所以你可能不得不这样做: System.loadLibrary("libQt5Concurrent") System.loadLibrary("openbr")

如果libQt5Concurrent有其他依赖项,则必须以相同的方式加载它们。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27148696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档