2016-05-06 9 views
1

Ich entwickle eine Anwendung mit QT Creator.So fügen Sie interne Bibliotheken zum Build mit QtCreator hinzu

Ich möchte eine Anwendung erstellen, die keine externen Bibliotheken benötigt, aber es sollte alle Bibliotheken in seinem Build enthalten Das möchte ich die folgen Problem beheben:

wenn ich die Anwendung durchlaufen die IDE (QtCreator), das Programm läuft ohne Probleme, wenn ich es durch das Terminal (mit „./application“) laufen druckt er mir die folgenden Fehler:

/home/helias/software/Qt/5.6/gcc_64/libexec/QtWebEngineProcess: error while loading shared libraries: libQt5WebEngineCore.so.5: cannot open shared object file: No such file or directory

Also, wie kann ich integrieren die Bibliotheken in die Freigabe der Anwendung t o keine Probleme mit Bibliotheken?

Antwort

3

Zum Bereitstellen von Qt-Apps (wie bei jeder Anwendung) müssen Sie die erforderlichen Bibliotheken im Loader-Suchpfad haben. Qt Creator legt wahrscheinlich die LD_LIBRARY_PATH-Variable fest, wenn Anwendungen ausgeführt werden, oder legt den RPATH der erstellten ausführbaren Datei fest. Führen LDD auf Ihre Anwendung zu sehen, was Bibliotheken nicht gefunden werden kann:

$ ldd ./application 

Dadurch werden die erforderlichen Bibliotheken und deren Standorte drucken:

linux-vdso.so.1 (0x00007ffc63cc3000) 
libQt5Widgets.so.5 => /usr/lib/libQt5Widgets.so.5 (0x00007f8a89e04000) 
libQt5WebEngineCore.so.5 => /usr/lib/libQt5WebEngineCore.so.5 (0x00007f8a85467000) 
libQt5Quick.so.5 => /usr/lib/libQt5Quick.so.5 (0x00007f8a84e7f000) 
libQt5Gui.so.5 => /usr/lib/libQt5Gui.so.5 (0x00007f8a846fc000) 
libQt5Qml.so.5 => /usr/lib/libQt5Qml.so.5 (0x00007f8a8410b000) 
libQt5Network.so.5 => /usr/lib/libQt5Network.so.5 (0x00007f8a83d9f000) 
libQt5WebChannel.so.5 => /usr/lib/libQt5WebChannel.so.5 (0x00007f8a83b82000) 
libQt5Positioning.so.5 => /usr/lib/libQt5Positioning.so.5 (0x00007f8a83942000) 
libQt5Core.so.5 => /usr/lib/libQt5Core.so.5 (0x00007f8a83278000) 
libGL.so.1 => /usr/lib/libGL.so.1 (0x00007f8a83007000) 
libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007f8a82dea000) 
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007f8a82a68000) 

usw.

Wenn der Lader kann keine Bibliotheken finden, wird es Ihnen sagen nicht gefunden. In diesem Fall stellen Sie sie entweder an der entsprechenden Stelle zur Verfügung, indem Sie sie installieren, oder kopieren Sie die Bibliotheken in ein Verzeichnis in der Datei RPATH der ausführbaren Datei. Am einfachsten wäre es, die Qt-Bibliotheken für Ihre Distribution zu installieren. Wie Sie mit meiner Ausgabe von ldd sehen können, werden meine installiert, wie sie in/usr/lib gefunden werden. Das erforderliche Paket wird bei jeder Linux-Distribution anders sein.

Die maßgebliche Quelle für die Bereitstellung von Qt-Anwendungen scheint here zu sein.

0

Möchten Sie die von Qt Framework benötigten Bibliotheken an Ihre Anwendung binden?

Wenn das so dann lesen Sie die Lizenzbedingungen zuerst, als ob ich Ihre Bedürfnisse verstehe, Sie erstellen Anwendung mit statischen Bibliotheken, die nicht von kostenlosen oder LGPL-Version von Qt erlaubt ist, für die Sie kaufen müssen kommerzielle Version.

Zum Erstellen der Anwendung mit statischen Bibliotheken können Sie auf voidrealms.com Tutorial zum Erstellen von Anwendungen mit statisch verknüpften Bibliotheken verweisen.