Pull to refresh

Comments 45

А какие примерно размеры получаются? Ясно что у каждого приложения свой, просто для примера что-нибудь.
Вот например в мое приложения я собственноручно подключаю следующие библиотеки 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
это всего лишь рекомендация.
так делать можно
И правильно говорит, действительно, провести грань между использованием и производной работой бывает трудно. Во избежание таких затруднений и лицензионных споров и даётся эта рекомендация. Однако как уже сказали, это всего лишь рекомендация.
Зачем писать статью на тему, очень хорошо освещённую в документации?
Да и любой желающий может очень быстро найти готовый батник в гугле.
Ну эт как сказать…
Я пол года назад не смог найти способа реализовать это, в итоге в каталоге с прогой лежали 4 dll'ки — ни чего лучше сделать не удалось.
UFO just landed and posted this here
UFO just landed and posted this here
> простенькая программка, которая должна обрабатывать простой текстовый файл, для своей работы требует кучи дополнительных библиотек.
Иииии… Что?

Положил в папочку — и все, очень удобно. К тому же, что вы будете делать с плагинами для изображений, с sql-драйверами и прочим? Тоже все в exe пихать?
И простенькая программа, которая должна обрабатывать простой текстовый файл будет занимать мегабайт 80.
программки с обработкой текстовых файликов следует писать на языках для этого созданных — awk, например!
А насколько легальна статическая линковка Qt с точки зрения лицензии?
Для варианта LGPL — абсолютно легальна.
UFO just landed and posted this here
UFO just landed and posted this here
1) файлы будут занимать не так уж и много места
2) необязательно класть их рядом с ехе, главное — предоставить к ним открытый доступ. Можно положить readme файлик, в котором будет ссылка для скачивания объектных файлов
по объему файлов можно выиграть раза в два, а то и больше, по опыту скажу
Это не совсем так. Есть вариант с предоставлением уже скомпилированных объектников. Например, так делают некоторые производители телевизоров с Linux на борту. Вот официальная страница по лицензированию qt.nokia.com/products/licensing
И там же можно найти 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»?
это всё, я правильно полагаю? подскажите пожалуйста.
UFO just landed and posted this here
Что-то не у меня не такая структура каталогов, странно.
configure вообще не ищется поиском в каталоге с Qt
Сейчас еще поковыряюсь.
UFO just landed and posted this here
Да, понимаю. Но нету. В корне лежат каталоги креатора, эмулятора, доки, примеры, че-то от симбиана и тд. Qt лежит в каталоге C:\QtSDK\Desktop\Qt\4.7.4
В общем, не понятно.
UFO just landed and posted this here
А теперь вопрос, что мы не сможем сделать и/или не будет работать после отключения этих опций:
-no-exceptions -no-stl -no-rtti -no-openssl -no-opengl
-no-webkit

А вот вебкит-то как раз статически и не скомпилится
если нужен к примеру статично webkit удалите
-no-webkit
из .bat-файла.
я давно не проверял, но разве они починили статическую сборку вебкита?
Вебкит собирается (VS2010). Мы так делаем, с некоторыми ньюансами.
1. Если вы включаете /LTCG, то для вебкита его нужно выключать иначе линкеру не хватит памяти чтобы собрать бибилиотеку.
2. В том или ином виде нужно давать возможность пользователю слинковать приложение с другой версией вебкита. При этом ничего выкладывать в общий доступ не обязательно, достаточно просто дать пользователю такую возможность. Например указать в лицензионном соглашение что вы можете выдать объектные файлы по запросу пользователя.
Очень своевременная для меня статья, в связи с чем у меня вопрос, есть ли какие-нибудь особенности для 64-х разрядной системы?
Честно говоря 100% уверенности конечно нет ни про webkit, ни про 64, но если у Вас получится (к чему я больше склоняюсь) просьба расскажите об этом.
Пока занят другим процессом, но как дойдут руки обязательно отпишусь.
Это больше бы пригодилось для разработки прог под AppStore…
Но в целом статическая линковка не нужна, 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.*
Делал все по инструкции — 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.

что не так сделал?
Sign up to leave a comment.

Articles