交叉编译qt:加载共享库时出错

时间:2017-05-23 11:00:37

标签: c++ linux qt cross-platform cross-compiling

上周,我用Toradex的Aster载板收到了全新的Colibri VF61。 我遵循了Toradex的指南,介绍了如何使用qt here编写电路板进行交叉编译。

来自tuturial的一切都很完美,但我尝试部署我的应用程序,一切顺利,直到我在目标设备上打开可执行文件,因为我收到以下消息:

  加载共享库时出现

错误:libQt5PrintSupport.so.5:无法打开共享对象文件:没有这样的文件或目录

我去看看我的目标设备中是否有任何Qt文件,并且没有,所以我去了我的主机设备中的sysroot文件夹并将所有Qt文件复制到我的目标设备, (Qt5PrintSupport在那里)但是在我将所有文件复制到与我在sysroot中的位置完全相同的位置后,同样的错误仍然出现。

我复制的文件是:

  

LibIcal Qt5Core Qt5OpenGLExtensions Qt5Svg   PulseAudio Qt5DBus Qt5Positioning Qt5SystemInfo   Qt5 Qt5Declarative Qt5PrintSupport Qt5Test   Qt53DCore Qt5Designer Qt5PublishSubscribe Qt5UiPlugin   Qt53DExtras Qt5Enginio Qt5Qml Qt5UiTools   Qt53D输入Qt5Gui Qt5Quick Qt5WebChannel   Qt53DLogic Qt5Help Qt5QuickTest Qt5WebKit   Qt53DQuick Qt5LinguistTools Qt5QuickWidgets Qt5WebKitWidgets   Qt53DQuickExtras Qt5Location Qt5Script Qt5WebSockets   Qt53DQuickInput Qt5Multimedia Qt5ScriptTools Qt5Widgets   Qt53DQuickRender Qt5MultimediaWidgets Qt5Sensors Qt5X11Extras   Qt53DRender Qt5Network Qt5SerialPort Qt5Xml   Qt5Bluetooth Qt5Nfc Qt5ServiceFramework Qt5XmlPatterns   Qt5Concurrent Qt5OpenGL Qt5Sql libxml2

在/ usr / lib / cmake

  

导入libexec mkspecs插件qml

文件夹到/ usr / lib / qt5

我注意到问题可能是我没有" lib" / usr / lib / qt5里面的文件夹但是我不知道如何创建它,因为它不在我的sysroot中。

总结:我想通过交叉编译来执行我的应用程序,但缺少lib文件夹,我不知道如何创建或链接它。

1 个答案:

答案 0 :(得分:0)

使用与应用程序使用相同路径的库并不一定意味着您的应用可以找到它。请遵循以下方法之一;

  • 将所需的qt库安装到系统的标准lib目录中(例如/ usr / lib /)
  • 将环境变量LD_LIBRARY_PATH设置为qt库所在的位置。惯例通常有一个bash脚本设置然后启动你的应用程序)或
  • 在编译时,将rpath变量设置为qt libraries文件夹的位置(-rpath for gcc)