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

发布于 2024-12-02 09:40:48 字数 775 浏览 0 评论 0原文

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

所以现在我使用共享库方法,因为我认为这会给我最大的灵活性,而且似乎使用最新的 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 的方式首先检查我的自定义目录。有人可以帮我解决这个问题吗?

I am trying to port my Qt code from Linux to embedded linux. Now I looked online and I came across this document on how to deploy onto embedded linux/linux:
http://doc.qt.io/archives/qt-4.7/deployment-x11.html

So now I use the shared-library approach since I think that will give me the most flexibility and also it seems that with the latest QtSDK I cannot deploy my application statically. I follow all the steps mentioned in the instructions and I have no plugins. So when I finish the steps I port all my code and the dependent libraries to a certain directory: /tmp/MyFolder.... I determine the libraries I need to port using ldd -v Application.exe. So now the thing is when I port the libraries onto embedded linux box I notice that some of those libraries already exist in directories such as /usr/lib and /lib. So when I run my code I write a shell script to modify the LD_LIBRARY_PATH environment variable to check those directories and my own directory for the appropriate libraries. Now when I run my code on the embedded linux box I get the error:

Error while loading shared libraries: /tmp/ftproot/RenderingEngine/./libm.so.6: ELF file OS ABI invalid.

I have tried googling the error but I still don't know what this error means and how to resolve it. The thing is the library libm.so.6 is in the /usr/lib directory and my custom directory as well. However, the way I set my LD_LIBRARY_PATH it checks my custom directory first. Could someone help me with this please?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

依 靠 2024-12-09 09:40:49

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

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

The ELF error indicates that you have linked to libraries that are in an incompatible binary format for your system. You should only link to libraries that were compiled for the target OS (in this case whatever version of embedded Linux).

Try recompiling your code and link to the libraries that were already present on your system (i.e. in /usr/lib).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文