Comments 45
А какие примерно размеры получаются? Ясно что у каждого приложения свой, просто для примера что-нибудь.
Вот например в мое приложения я собственноручно подключаю следующие библиотеки
Смог все это уменьшить на 2 Mб сделав Portable версию своей программы (нужно мне это было для того чтобы спрятать БД SQLite, которая шла рядом с .exe)
QtGui/QApplication, QTextCodec, QDesktopWidget, QDebug, QtSql, QMessageBox
+ маленький файл ресурсов и 3 формы — занимает 8,5 Мб.Смог все это уменьшить на 2 Mб сделав Portable версию своей программы (нужно мне это было для того чтобы спрятать БД SQLite, которая шла рядом с .exe)
UFO just landed and posted this here
При статической линковке с LGPL (по которой также распространяется Qt) достаточно предоставить объектные файлы своего приложения, необходимые для сборки.
UFO just landed and posted this here
Зачем писать статью на тему, очень хорошо освещённую в документации?
Да и любой желающий может очень быстро найти готовый батник в гугле.
Да и любой желающий может очень быстро найти готовый батник в гугле.
UFO just landed and posted this here
> простенькая программка, которая должна обрабатывать простой текстовый файл, для своей работы требует кучи дополнительных библиотек.
Иииии… Что?
Положил в папочку — и все, очень удобно. К тому же, что вы будете делать с плагинами для изображений, с sql-драйверами и прочим? Тоже все в exe пихать?
И простенькая программа, которая должна обрабатывать простой текстовый файл будет занимать мегабайт 80.
Иииии… Что?
Положил в папочку — и все, очень удобно. К тому же, что вы будете делать с плагинами для изображений, с sql-драйверами и прочим? Тоже все в exe пихать?
И простенькая программа, которая должна обрабатывать простой текстовый файл будет занимать мегабайт 80.
программки с обработкой текстовых файликов следует писать на языках для этого созданных — awk, например!
А насколько легальна статическая линковка Qt с точки зрения лицензии?
Для варианта LGPL — абсолютно легальна.
UFO just landed and posted this here
Нет, не только. Можно использовать статическую линковку с LGPL и предоставлять скомпилированные obj файлы для перелинковки
stackoverflow.com/questions/2277165/qt-single-exe-with-lgpl
stackoverflow.com/questions/2277165/qt-single-exe-with-lgpl
UFO just landed and posted this here
Это не совсем так. Есть вариант с предоставлением уже скомпилированных объектников. Например, так делают некоторые производители телевизоров с Linux на борту. Вот официальная страница по лицензированию qt.nokia.com/products/licensing
И там же можно найти FAQ по лицензиям и использованию LGPL в частности: qt.nokia.com/about/licensing/frequently-asked-questions#what-is-the-lgpl
Таким образом получается что динамическая линковка возможна без каких-либо проблем, но нас интересует статическая. Посему едем дальше…
Открываем статью по LGPL в википедии: en.wikipedia.org/wiki/GNU_Lesser_General_Public_License
Читаем там следующее:
А вот что говорит другой источник answers.google.com/answers/threadview/id/439136.html:
То бишь можно обойтись предоставлением уже скомпилированных объектников, но РМС это не одобряет (ну он и библиотеки призывает под чистой GPL распространять). Так что используйте, по возможности, динамическую линковку.
И там же можно найти FAQ по лицензиям и использованию LGPL в частности: qt.nokia.com/about/licensing/frequently-asked-questions#what-is-the-lgpl
In essence this means that Qt users may create proprietary applications that dynamically link to the LGPL-licensed Qt libraries provided he or she adheres to the requirements of the LGPL.
Таким образом получается что динамическая линковка возможна без каких-либо проблем, но нас интересует статическая. Посему едем дальше…
Открываем статью по LGPL в википедии: en.wikipedia.org/wiki/GNU_Lesser_General_Public_License
Читаем там следующее:
Alternatively, a statically linked library is allowed if either source code or linkable object files are provided.
А вот что говорит другой источник answers.google.com/answers/threadview/id/439136.html:
You can thus distribute object files (and protect your source code)
and still comply with the requirements of the LGPL.
However, others (in particular, Richard Stallman) does not necessarily
interpret the LGPL in this way.
То бишь можно обойтись предоставлением уже скомпилированных объектников, но РМС это не одобряет (ну он и библиотеки призывает под чистой GPL распространять). Так что используйте, по возможности, динамическую линковку.
UFO just landed and posted this here
Не рекомендует — не значит запрещает.
Объем статически скомпонованного файла будет действительно несколько меньше, чем суммарный объем всех нужных библиотек при динамической линковке.
Так что собирайте статически себе на здоровье. А объектники таскать с собой никто не заставляет. Выложите их у себя на сайте и всего делов.
Объем статически скомпонованного файла будет действительно несколько меньше, чем суммарный объем всех нужных библиотек при динамической линковке.
Так что собирайте статически себе на здоровье. А объектники таскать с собой никто не заставляет. Выложите их у себя на сайте и всего делов.
Ловкость рук и ни какого мошенничества!
UFO just landed and posted this here
А с компилятором msvc2010 мне нужно, кроме изменения PATH(и изменения файлика qmake.conf в папке C:\Qt\4.*.*\mkspecs\win32-msvc2010), и строчки
"-static -platform win32-g++" на "-static -platform win32-msvc2010"
на что изменить последнюю строку «mingw32-make»? на «msvc2010-make»?
это всё, я правильно полагаю? подскажите пожалуйста.
"-static -platform win32-g++" на "-static -platform win32-msvc2010"
на что изменить последнюю строку «mingw32-make»? на «msvc2010-make»?
это всё, я правильно полагаю? подскажите пожалуйста.
Что-то не у меня не такая структура каталогов, странно.
configure вообще не ищется поиском в каталоге с Qt
Сейчас еще поковыряюсь.
configure вообще не ищется поиском в каталоге с Qt
Сейчас еще поковыряюсь.
А теперь вопрос, что мы не сможем сделать и/или не будет работать после отключения этих опций:
-no-exceptions -no-stl -no-rtti -no-openssl -no-opengl
-no-exceptions -no-stl -no-rtti -no-openssl -no-opengl
-no-webkit
А вот вебкит-то как раз статически и не скомпилится
если нужен к примеру статично webkit удалите
-no-webkit
из .bat-файла.
-no-webkit
из .bat-файла.
я давно не проверял, но разве они починили статическую сборку вебкита?
Вебкит собирается (VS2010). Мы так делаем, с некоторыми ньюансами.
1. Если вы включаете /LTCG, то для вебкита его нужно выключать иначе линкеру не хватит памяти чтобы собрать бибилиотеку.
2. В том или ином виде нужно давать возможность пользователю слинковать приложение с другой версией вебкита. При этом ничего выкладывать в общий доступ не обязательно, достаточно просто дать пользователю такую возможность. Например указать в лицензионном соглашение что вы можете выдать объектные файлы по запросу пользователя.
1. Если вы включаете /LTCG, то для вебкита его нужно выключать иначе линкеру не хватит памяти чтобы собрать бибилиотеку.
2. В том или ином виде нужно давать возможность пользователю слинковать приложение с другой версией вебкита. При этом ничего выкладывать в общий доступ не обязательно, достаточно просто дать пользователю такую возможность. Например указать в лицензионном соглашение что вы можете выдать объектные файлы по запросу пользователя.
Очень своевременная для меня статья, в связи с чем у меня вопрос, есть ли какие-нибудь особенности для 64-х разрядной системы?
Это больше бы пригодилось для разработки прог под AppStore…
Но в целом статическая линковка не нужна, cmake fixup_bundle намного круче.
Но в целом статическая линковка не нужна, cmake fixup_bundle намного круче.
Мягко говоря статья получилась несколько слабовата.
Да и полный мануал по разворачиванию статической сборки находится в гугле за пару минут, в вики коммьюнити ни qtcenter.org
Собирать библиотеку Qt'вцы рекомендуют из сырых zip'ованых исходников (не используя инсталяторы), в частности и потому, что статическая сборка, как несложно догадаться, не реализует режим отладки, поэтому писать проект вы конечно же будете с использованием уже ранее установленной дефолтной сборке (к которой у вас все пути в переменных среды уже прописаны).
Алсо свежий релиз библиотек под версией Qt 4.8.0 так же просто не соберется, в этот раз разработчики почему-то решили не убирать служебную утилиту syncqt, и если, перед тем, как пойти беспечно пить кофе, вы увидели в консоли сообщение типа mingw32-make: *** No rule to make target 'sub -src', то либо ставьте себе Perl(нужен для сборки этой самой syncqt), либо удаляйте из \bin все файлы syncqt.*
Да и полный мануал по разворачиванию статической сборки находится в гугле за пару минут, в вики коммьюнити ни qtcenter.org
Собирать библиотеку Qt'вцы рекомендуют из сырых zip'ованых исходников (не используя инсталяторы), в частности и потому, что статическая сборка, как несложно догадаться, не реализует режим отладки, поэтому писать проект вы конечно же будете с использованием уже ранее установленной дефолтной сборке (к которой у вас все пути в переменных среды уже прописаны).
Алсо свежий релиз библиотек под версией Qt 4.8.0 так же просто не соберется, в этот раз разработчики почему-то решили не убирать служебную утилиту syncqt, и если, перед тем, как пойти беспечно пить кофе, вы увидели в консоли сообщение типа mingw32-make: *** No rule to make target 'sub -src', то либо ставьте себе Perl(нужен для сборки этой самой syncqt), либо удаляйте из \bin все файлы syncqt.*
Делал все по инструкции — Reading C:/Qt/4.8.0/src/plugins/graphicssystems/graphicssystems.pro [C:/Qt/src/plugins/graphicssystems]
Reading C:/Qt/4.8.0/src/plugins/graphicssystems/trace/trace.pro [C:/Qt/src/plugins/graphicssystems/trace]
Reading C:/Qt/4.8.0/src/plugins/accessible/accessible.pro [C:/Qt/src/plugins/accessible]
Reading C:/Qt/4.8.0/src/plugins/accessible/widgets/widgets.pro [C:/Qt/src/plugins/accessible/widgets]
Qt is now configured for building. Just run mingw32-make.
To reconfigure, run mingw32-make confclean and configure.
C:\Qt>mingw32-make
mingw32-make: *** No targets specified and no makefile found. Stop.
что не так сделал?
Reading C:/Qt/4.8.0/src/plugins/graphicssystems/trace/trace.pro [C:/Qt/src/plugins/graphicssystems/trace]
Reading C:/Qt/4.8.0/src/plugins/accessible/accessible.pro [C:/Qt/src/plugins/accessible]
Reading C:/Qt/4.8.0/src/plugins/accessible/widgets/widgets.pro [C:/Qt/src/plugins/accessible/widgets]
Qt is now configured for building. Just run mingw32-make.
To reconfigure, run mingw32-make confclean and configure.
C:\Qt>mingw32-make
mingw32-make: *** No targets specified and no makefile found. Stop.
что не так сделал?
Sign up to leave a comment.
Qt — статическая линковка библиотеки под Windows