linux - 将 Qt 从 Linux 集成/移植到嵌入式 Linux

标签 linux qt shared-libraries porting

我正在尝试将我的 Qt 代码从 Linux 移植到嵌入式 Linux。现在我在网上查看了这个关于如何部署到嵌入式 linux/linux 的文档: http://doc.qt.io/archives/qt-4.7/deployment-x11.html

所以现在我使用共享库方法,因为我认为这会给我最大的灵 active ,而且似乎使用最新的 QtSDK 我无法静态部署我的应用程序。我遵循说明中提到的所有步骤,并且没有插件。因此,当我完成这些步骤时,我将所有代码和依赖库移植到某个目录:/tmp/MyFolder...。我使用 ldd -v Application.exe 确定需要移植的库。所以现在的问题是,当我将这些库移植到嵌入式 Linux 机器上时,我注意到其中一些库已经存在于/usr/lib 和/lib 等目录中。因此,当我运行代码时,我编写一个 shell 脚本来修改 LD_LIBRARY_PATH 环境变量,以检查这些目录和我自己的目录中是否有适当的库。现在,当我在嵌入式 Linux 机器上运行代码时,出现错误:

加载共享库时出错:/tmp/ftproot/RenderingEngine/./libm.so.6:ELF 文件操作系统 ABI 无效。

我已尝试通过谷歌搜索该错误,但我仍然不知道该错误意味着什么以及如何解决它。问题是库 libm.so.6 位于/usr/lib 目录和我的自定义目录中。但是,我设置 LD_LIBRARY_PATH 的方式首先检查我的自定义目录。有人可以帮我解决这个问题吗?

最佳答案

ELF 错误表明您链接到的库的二进制格式与您的系统不兼容。您应该只链接到为目标操作系统(在本例中为嵌入式 Linux 的任何版本)编译的库。

尝试重新编译代码并链接到系统上已存在的库(即在 /usr/lib 中)。

关于linux - 将 Qt 从 Linux 集成/移植到嵌入式 Linux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7237831/

相关文章:

linux - NPM 安装 PM2 -g (Ubuntu 14.04 x64) 时出错

python - Gtk 消息 : Failed to load module

linux - 如何在 Linux 中禁用特定模块的自动加载

c++ - 使用 QItemDelegate 在 QTableView 中显示其他数据

qt - 如何获取系统的默认浏览器?

c++ - 如何从 QString 获取 const char *

c++ - 在编译和运行时之间发生变化时如何解析共享库位置?

c - "sendmsg"是否释放缓冲区或消息的内存?

c++ - 静态库和共享库的区别?

Jenkins 管道共享库与插件