J'ai essayé de construire une bibliothèque QT statique avec la commande suivante: mais j'ai reçu un message dit: p> est-ce possible de construire une bibliothèque QT statique avec tous les modules activés? et comment? p> merci p> p>
5 Réponses :
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é em> de sorte qu'un utilisateur final puisse relier contre sa propre version. P>
Si vous ne déployez pas le résultat à personne, vous pourriez probablement le faire et vous conformer. P>
Vous devrez éditer la construction pour le faire cependant, car on dirait qu'ils sont conformes à LGPL par défaut. P>
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 i> de traiter avec LGPL. Pour une raison quelconque, il y a beaucoup de fud entièrement gracineux autour de LGPL.
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. P>
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.
Rien à voir avec les problèmes LGPL, puisque votre application pourrait être open source et sous licence de manière compatible avec le LGPL. P>
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: P>
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. P> blockQuote>
https://www.qt.gitorieux.org/qt/qt/ COMMITE / 4221D629E2CF37EE8C5BA7CB595B05AB8C82F113 P>
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. P>
Link vous emmène à une liste de commits, pourriez-vous mettre à jour?
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 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é à J'ai essayé d'éditer des fabricants de webcore et JSCORE ajoutant Malheureusement, c'est tout ce que j'avais maintenant. P> src \ 3rdparty \ webkit \ source code> vous-même. p>
SRC \ 3RDParty \ webkit \ Source \ version \ version code>, donc -ljscore. Mais si vous les copiez sur / lib yourslef, erreur de liaison est toujours contextuelle. P>
-Static code>, mais cela n'a pas fonctionné du tout. P>
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
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 code> et
src \ 3rdparty \ webkit \ Source \ javascriptcore \ version code> to
to
> \ lib code>. Maintenant, les compilateurs peuvent les trouver mais j'ai une erreur de liaison.