【问题标题】:Cross-compiling QT apps for a raspberry pi - Cannot open shared object file为树莓派交叉编译 QT 应用程序 - 无法打开共享对象文件
【发布时间】:2012-10-11 21:50:26
【问题描述】:

我希望能够在我的全尺寸桌面上使用 QT Creator,以便能够开发和编译 qt 应用并将它们部署到 pi。

我遵循了这个指南:http://qt-project.org/wiki/Create#QtonPi_App_SDK

我正在尝试编译 hello-qtonpi 项目。使用 pi 的编译器和工具链,我在编译过程中遇到两个错误:

/opt/qtonpi/lib/gcc/armv5tel-qtonpi-linux-gnueabi/4.5.4/../../../../armv5tel-qtonpi-linux-gnueabi/bin/as: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory
/opt/qtonpi/libexec/gcc/armv5tel-qtonpi-linux-gnueabi/4.5.4/cc1plus: error while loading shared libraries: libmpc.so.2: cannot open shared object file: No such file or directory

我检查了这两个库是否安装在我的 pi 上,以及从 pi 到我的 sys-root 文件夹的 rsynced /lib 和 /usr/lib。

我尝试使用 QT Creators Add Library -> System Library 工具,并选择了例如libz.so,因为它没有显示 so.1。它在 .pro 文件中添加了以下行:

unix:!macx:!symbian: LIBS += -lz

但是它仍然没有摆脱错误。

我应该如何包含这些库或告诉编译器从哪里查找?

【问题讨论】:

    标签: c++ qt shared-libraries cross-compiling raspberry-pi


    【解决方案1】:

    关于 libz 和 libmpc 的两个错误消息都与缺少的目标库无关,而是与 主机部分有关。

    您的交叉编译工具链已构建为动态工具链,因此您需要在主机上拥有所有解析依赖项的库。

    由于 libz.so.1 很常见,也许您运行的是 64 位主机,但您的工具链是为 32 位构建的。在这种情况下,您需要找到提供 32 位版本的 libz.so.1 和 libmpc.so.2 的包。

    【讨论】:

    • 我在主机上安装了两个库的 32 位版本 + 另一个。现在它抱怨缺少 libz.so.1 的版本信息。在控制台上它说它“找不到文件/lib/libz.so.1 的绝对位置”。有什么想法吗?
    • 不管是什么原因,通过删除和重新创建符号链接表单 .so.1 到 .so.1.2.3 来修复它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-17
    • 1970-01-01
    相关资源
    最近更新 更多