9
votes

Est-ce que cela est possible de construire une bibliothèque QT statique avec WebKit activé? Et comment?

J'ai essayé de construire une bibliothèque QT statique avec la commande suivante: xxx

mais j'ai reçu un message dit: xxx

est-ce possible de construire une bibliothèque QT statique avec tous les modules activés? et comment?

merci


3 commentaires

Quelle plate-forme êtes-vous vous êtes sur lequel la version QT est-ce?


Linux, Ubuntu 10.4 et Qt 4.7.1. et j'avais toujours "Impossible de trouver -ljscore" Erreur "


@Mickeyshine J'ai essayé de copier JSCORE, webcore à partir de SRC \ 3RDParty \ webkit \ Source \ version \ version \ version et src \ 3rdparty \ webkit \ Source \ javascriptcore \ version to to > \ lib . Maintenant, les compilateurs peuvent les trouver mais j'ai une erreur de liaison.


5 Réponses :


0
votes

Peut-être parce que des parties de celui-ci sont LGPL. Donc, c'est probablement possible, mais le LGPL signifierait que vous devez fournir une source ou code d'objet compilé de sorte qu'un utilisateur final puisse relier contre sa propre version.

Si vous ne déployez pas le résultat à personne, vous pourriez probablement le faire et vous conformer.

Vous devrez éditer la construction pour le faire cependant, car on dirait qu'ils sont conformes à LGPL par défaut.


4 commentaires

Cela n'aurait aucun effet lors de l'utilisation de la version OpenSource de QT, serait-ce. Webkit n'est pas différent d'une autre autre des bibliothèques. C'est certainement pour des raisons techniques, les constructions statiques de WebKit ont toujours été fragiles, bien que non impossibles. Je n'ai pas l'erreur ci-dessus.


Il existe de nombreuses licences open source et toutes sont toutes conformes LGPL. Par exemple, BSD, MIT et Apache sont plus indulgent et permettent une liaison statique sans donner la source. Si vous envisagez de distribuer la source de votre application, vous pouvez créer un lien entre statiquement contre les bibliothèques LGPL. Si vous n'êtes pas, vous ne pouvez que vous connecter statiquement si vous donnez un moyen pour l'utilisateur final de rejoindre leur propre version de WebKit. (C'est la réponse courte, lisez LGPL pour une réponse complète)


J'ai déjà un projet QT utilisant QWebView, et j'ai également essayé depuis un mois de l'exécuter sur d'autres systèmes, je ne peux donc pas réussir dans cela, ma question concerne les dernières modifications de la licence Qt LGPL, puis-je compiler statiquement le projet QT sous licence LGPL ? Si non, il existe un moyen de compiler statiquement ceux des DLL ne sont pas des bibliothèques qt (msvcrt.dll, msvc100.dll, ...) et ne distribuez que des dlls QT avec application binaire?


Fourniture de code d'objet compilé, en particulier sous la forme d'une bibliothèque que vous pouvez reliquer avec votre propre construction de QT (même de manière dynamique, pensez-vous), est la méthode idiomatique de traiter avec LGPL. Pour une raison quelconque, il y a beaucoup de fud entièrement gracineux autour de LGPL.



0
votes

Eh bien, Lou Franco a raison, en utilisant le LGPL et la compilation de manière statique ne correspond pas vraiment à la LGPL. Ce que la plupart des "utilisateurs" ou des développeurs de QT sont, de compiler de manière dynamique, privilégiant leurs bibliothèques "propres compilées" dans le répertoire d'applications. C'est bon avec le LGPL tant que vous n'avez pas changé de code dans Qt / QtwebKit / Webkit lui-même et ne fournissiez pas les modifications à l'amont.


1 commentaires

Pour être clair, il existe un moyen de se conformer à LGPL et à la compilation statique. Il vous suffit de fournir un code d'objet compilé (les fichiers .O ou .OBJ) afin qu'un utilisateur puisse relier à sa version de la bibliothèque LGPL.



2
votes

Rien à voir avec les problèmes LGPL, puisque votre application pourrait être open source et sous licence de manière compatible avec le LGPL.

WEBKIT apparemment lié statiquement lié n'est pas pris en charge pour des raisons techniques. (Certains compilateurs semblent ne pas être heureux avec cela). Le script de construction a été mis à jour dans COMMITE 4221D629E2CF37EE8C5BA7CB595B05AB8C82F113 pour l'empêcher explicitement:

Supput le support pour la liaison statique de Qtwebkit. La liaison statique de WebKit ne sera plus supportée dans Qt 4.7, de sorte que cette validation s'assure qu'il est mentionné dans la documentation et que la configuration désactive WebKit si la liaison statique de QT est demandée.

https://www.qt.gitorieux.org/qt/qt/ COMMITE / 4221D629E2CF37EE8C5BA7CB595B05AB8C82F113

Cela peut ne pas fonctionner avec votre compilateur, mais je soupçonne que l'équipe QT ne souhaitait pas entrer dans la difficulté à maintenir cela pour toutes les architectures officiellement appuyées.


1 commentaires

Link vous emmène à une liste de commits, pourriez-vous mettre à jour?



3
votes

presque impossible. Webkit utilise le haut des maquillages autres que les maquillages générés par configuration de l'outil. Vous pouvez vérifier src \ 3rdparty \ webkit \ source vous-même.

Si vous avez essayé de compiler QT Static avec WebKit, vous rencontrerez une erreur indique ne peut pas trouver -lwebcore. En fait, le webcore.a est généré à SRC \ 3RDParty \ webkit \ Source \ version \ version , donc -ljscore. Mais si vous les copiez sur / lib yourslef, erreur de liaison est toujours contextuelle.

J'ai essayé d'éditer des fabricants de webcore et JSCORE ajoutant -Static , mais cela n'a pas fonctionné du tout.

Malheureusement, c'est tout ce que j'avais maintenant.


0 commentaires

4
votes

pour qt 4.8.3 J'ai dû corriger les fichiers .pro pour créer un seul Qtwebkit au lieu de bibliothèques distinctes WebKit et JavaScriptcore. Le lien de lieur est confus car il existe des dépendances entre les deux bibliothèques.

Vous non sûr, si une approche similaire fonctionnera pour votre QT 4.7.1. P>

Je ne vais pas mentionner les problèmes de licence . P>

diff --git a/mkspecs/common/linux.conf b/mkspecs/common/linux.conf
index d60533e..6a7ffa7 100644
--- a/mkspecs/common/linux.conf
+++ b/mkspecs/common/linux.conf
@@ -7,8 +7,8 @@ QMAKE_CXXFLAGS_THREAD   += $$QMAKE_CFLAGS_THREAD

 QMAKE_INCDIR          =
 QMAKE_LIBDIR          =
-QMAKE_INCDIR_X11      = /usr/X11R6/include
-QMAKE_LIBDIR_X11      = /usr/X11R6/lib
+QMAKE_INCDIR_X11      = /usr/include/X11
+QMAKE_LIBDIR_X11      = /usr/lib/X11
 QMAKE_INCDIR_QT       = $$[QT_INSTALL_HEADERS]
 QMAKE_LIBDIR_QT       = $$[QT_INSTALL_LIBS]
 QMAKE_INCDIR_OPENGL   = /usr/X11R6/include
diff --git a/mkspecs/linux-g++-64/qmake.conf b/mkspecs/linux-g++-64/qmake.conf
index 222f6b7..3780295 100644
--- a/mkspecs/linux-g++-64/qmake.conf
+++ b/mkspecs/linux-g++-64/qmake.conf
@@ -20,7 +20,7 @@ include(../common/gcc-base-unix.conf)
 include(../common/g++-unix.conf)


-QMAKE_LIBDIR_X11      = /usr/X11R6/lib64
-QMAKE_LIBDIR_OPENGL   = /usr/X11R6/lib64
+QMAKE_LIBDIR_X11      = /usr/lib/X11
+QMAKE_LIBDIR_OPENGL   = /usr/lib/X11

 load(qt_config)
diff --git a/src/3rdparty/webkit/Source/WebKit.pro b/src/3rdparty/webkit/Source/WebKit.pro
index 9be0f4a..c1e575d 100644
--- a/src/3rdparty/webkit/Source/WebKit.pro
+++ b/src/3rdparty/webkit/Source/WebKit.pro
@@ -3,14 +3,9 @@ CONFIG += ordered

 include(WebKit.pri)

-!v8 {
-    exists($$PWD/JavaScriptCore/JavaScriptCore.pro): SUBDIRS += JavaScriptCore/JavaScriptCore.pro
-    exists($$PWD/JavaScriptCore/jsc.pro): SUBDIRS += JavaScriptCore/jsc.pro
-}

 webkit2:exists($$PWD/WebKit2/WebKit2.pro): SUBDIRS += WebKit2/WebKit2.pro

-SUBDIRS += WebCore
 SUBDIRS += WebKit/qt/QtWebKit.pro

 webkit2 {
diff --git a/src/3rdparty/webkit/Source/WebKit/qt/QtWebKit.pro b/src/3rdparty/webkit/Source/WebKit/qt/QtWebKit.pro
index 847f6f4..e2daf24 100644
--- a/src/3rdparty/webkit/Source/WebKit/qt/QtWebKit.pro
+++ b/src/3rdparty/webkit/Source/WebKit/qt/QtWebKit.pro
@@ -2,7 +2,6 @@
 CONFIG += building-libs
 CONFIG += depend_includepath

-TARGET = QtWebKit
 TEMPLATE = lib


0 commentaires