Название: статическая компиляция QT ??? Отправлено: allco от Июль 21, 2006, 20:18 как это сделать ???
как закомпилить qt статически под Windows ??? Помогите плиз !!! Название: статическая компиляция QT ??? Отправлено: Alexei от Июль 22, 2006, 11:17 Надо в командной строке configure.exe указать -static
Например, я использую следущую команду для сборки статической Qt: configure.exe -debug-and-release -static -plugin-sql-mysql -plugin-sql-oci -qt-zlib -no-gif -qt-libpng -no-libmng -qt-libjpeg -no-qt3support Название: статическая компиляция QT ??? Отправлено: L.Marvell от Июль 22, 2006, 11:41 Цитата: "Alexei" Надо в командной строке configure.exe указать -static Например, я использую следущую команду для сборки статической Qt: configure.exe -debug-and-release -static -plugin-sql-mysql -plugin-sql-oci -qt-zlib -no-gif -qt-libpng -no-libmng -qt-libjpeg -no-qt3support -plugin-sql-mysql? В статической версии плагины же вроде как не работают? Сам не проверял, но вроде слышал такое. Название: статическая компиляция QT ??? Отправлено: noosooth от Июль 22, 2006, 12:49 Цитата: "L.Marvell" [-plugin-sql-mysql? В статической версии плагины же вроде как не работают? Сам не проверял, но вроде слышал такое. Это есть не совсем так. :) Насколько я понимаю, начиная с версии 4.1, в Qt появились т.н. статические плагины. Посмотрите в Assistant макрос Q_IMPORT_PLUGIN и там же ссылочка на Static Plugins. С SQL драйверами я таким образом не работал, но по крайней мере графические плагины (GIF, JPEG и MNG) - прекрасно собираются в отдельные статические библиотеки. Название: статическая компиляция QT ??? Отправлено: L.Marvell от Июль 22, 2006, 13:20 Цитата: "noosooth" Цитата: "L.Marvell" [-plugin-sql-mysql? В статической версии плагины же вроде как не работают? Сам не проверял, но вроде слышал такое. Это есть не совсем так. :) Насколько я понимаю, начиная с версии 4.1, в Qt появились т.н. статические плагины. Посмотрите в Assistant макрос Q_IMPORT_PLUGIN и там же ссылочка на Static Plugins. С SQL драйверами я таким образом не работал, но по крайней мере графические плагины (GIF, JPEG и MNG) - прекрасно собираются в отдельные статические библиотеки. Интересно. Почитаем. Сколько места отъедает статически собранная кт? А то вот поставил собираться, а теперь думаю хватит, не хватит... :) Название: статическая компиляция QT ??? Отправлено: noosooth от Июль 22, 2006, 14:06 Цитата: "L.Marvell" Сколько места отъедает статически собранная кт? А то вот поставил собираться, а теперь думаю хватит, не хватит... :) Тут мне сложно ответить, т.к. работаю в основном с динамической версией, а статическую собираю в отдельном каталоге и только release. (configure -release -static -qt-gif -qt-libpng -qt-libmng -qt-libjpeg) Собираю компилятором от VS2005, причем только исходники (без еxamples, demos и tools). Вдобавок в mkspecs\win32-msvc2005\qmake.conf я включил оптимизацию по скорости и статически подлинковался с плюсовым runtime. Весит это дело у меня в районе 289 метров. Название: статическая компиляция QT ??? Отправлено: L.Marvell от Июль 22, 2006, 14:32 Цитата: "noosooth" Цитата: "L.Marvell" Сколько места отъедает статически собранная кт? А то вот поставил собираться, а теперь думаю хватит, не хватит... :) Тут мне сложно ответить, т.к. работаю в основном с динамической версией, а статическую собираю в отдельном каталоге и только release. (configure -release -static -qt-gif -qt-libpng -qt-libmng -qt-libjpeg) Собираю компилятором от VS2005, причем только исходники (без еxamples, demos и tools). Вдобавок в mkspecs\win32-msvc2005\qmake.conf я включил оптимизацию по скорости и статически подлинковался с плюсовым runtime. Весит это дело у меня в районе 289 метров. Вот заодно и спрошу. Как собирать без examples, demos, tools? Я так подозреваю что нужно где-то что-то закоментировать, только вот где? Название: статическая компиляция QT ??? Отправлено: noosooth от Июль 22, 2006, 18:34 Цитата: "L.Marvell" Вот заодно и спрошу. Как собирать без examples, demos, tools? Я так подозреваю что нужно где-то что-то закоментировать, только вот где? Я после configure просто говорю: nmake sub-src Название: статическая компиляция QT ??? Отправлено: Alexei от Июль 23, 2006, 13:53 Цитировать Сколько места отъедает статически собранная кт? А то вот поставил собираться, а теперь думаю хватит, не хватит... Чуть меньше 5Г Название: статическая компиляция QT ??? Отправлено: L.Marvell от Июль 24, 2006, 13:52 Я уже нарыл, но все равно спасибо. Правда у меня как-то ну очень мало получилось, 263М. Счаз буду проверять все ли работает :)
добавлено спустя 57 минут: А это нормально что статически собранное приложение тянет за собой списочек: comerr32.dll krb5_32.dll libiconv-2.dll libintl-2.dll libmysql.dll libpq.dll Само приложение работает с б/д MySQL, а либу для постгреса я скомпилил для кт на всякий случай. Название: статическая компиляция QT ??? Отправлено: Admin от Июль 24, 2006, 15:00 дв нормально! пусть тянет!
Название: статическая компиляция QT ??? Отправлено: L.Marvell от Июль 24, 2006, 15:49 Стоп. Но ведь кт собиралась статически с опциями -qt-sql-mysql и -qt-sql-psql (и соотв. путями к инклудам и либам). Т.е. как мне представлялось кт должна была слинковаться с libmysql и libpq ну и соотв. приложение не должно требовать этих дллек. Или я все неправильно понял.
+ ко всему, зачем мне таскать с приложением libpq.dll и его табор, если приложение не работает с PostgreSQL? Название: статическая компиляция QT ??? Отправлено: noosooth от Июль 24, 2006, 19:26 Цитата: "L.Marvell" Т.е. как мне представлялось кт должна была слинковаться с libmysql и libpq ну и соотв. приложение не должно требовать этих дллек. Или я все неправильно понял. Ничего не смыслю в этих драйверах к базам, но рискну предположить, что статически собрав Qt с ключами qt-sql... , Вы всего лишь получили отдельные статические библиотеки где нибудь в /Qt/4.x.x/plugins/... И насколько я понимаю, линковку с этими библиотеками должно осуществлять Ваше приложение, а не Qt. Плюс в приложении Вы должны использовать макрос Q_IMPORT_PLUGIN. Возможно я ошибаюсь. Название: статическая компиляция QT ??? Отправлено: Admin от Июль 24, 2006, 22:15 нет libmysql.dll это dll, это не статическая либа
ты ее никак не запихнешь к себе, возможно для этого надо пересобрать mysql Название: статическая компиляция QT ??? Отправлено: noosooth от Июль 25, 2006, 00:29 Цитата: "Admin" нет libmysql.dll это dll, это не статическая либа ты ее никак не запихнешь к себе, возможно для этого надо пересобрать mysql Прошу прощения, это я видимо несколько обнаглел и полез в область где ни ухо ни рыло :) Ежели libmysql.lib это библиотека импорта для libmysql.dll из поставки мускула, и она нужна Qt' вому плагину для того чтобы собственно собраться, то тогда он ессно будет тянуть эту dll за собой независимо от того статически он слинкован или нет. Название: статическая компиляция QT ??? Отправлено: L.Marvell от Июль 25, 2006, 12:57 Цитата: "noosooth" Цитата: "L.Marvell" Т.е. как мне представлялось кт должна была слинковаться с libmysql и libpq ну и соотв. приложение не должно требовать этих дллек. Или я все неправильно понял. Ничего не смыслю в этих драйверах к базам, но рискну предположить, что статически собрав Qt с ключами qt-sql... , Вы всего лишь получили отдельные статические библиотеки где нибудь в /Qt/4.x.x/plugins/... И насколько я понимаю, линковку с этими библиотеками должно осуществлять Ваше приложение, а не Qt. Плюс в приложении Вы должны использовать макрос Q_IMPORT_PLUGIN. Возможно я ошибаюсь. Макрос не использовал, приложение собранное с помощью стат. кт работало на ура, если положить рядом с бинарником libmysql.dll ну или прописать в системе пути к этой либе. Меня несколько просветили на qtcentre: "with -plugin-sql-mysql you will have to deliver the plugin and libmysql.dll, and with -qt-sql-mysql only libmysql.dll (because the plugin will be "hidden" inside Qt)." добавлено спустя 7 минут: Осталось понять зачем приложение просит еще и libpq.dll хотя эта либа в нем и не используется. Хотя понять я вроде понял. Сборка приложения идет еще и с теми ключами, с которыми собиралась кт. Проскакивают строчки -lmysql -lpq -L C:\mysql\lib\opt -L C:\pgsql\lib. Я так понимаю они берутся из qmake.conf или нет? Вопрос только как от этого избавиться? Неужели придется пересобрать кт без -qt-sql-psql? t-sql-psql? добавлено спустя 16 минут: Мдя... видимо таки придется пересобирать кт без -qt-sql-psql :( Название: статическая компиляция QT ??? Отправлено: noosooth от Июль 25, 2006, 13:29 Цитата: "L.Marvell" Макрос не использовал, приложение собранное с помощью стат. кт работало на ура, если положить рядом с бинарником libmysql.dll ну или прописать в системе пути к этой либе. Меня несколько просветили на qtcentre: "with -plugin-sql-mysql you will have to deliver the plugin and libmysql.dll, and with -qt-sql-mysql only libmysql.dll (because the plugin will be "hidden" inside Qt)." Осталось понять зачем приложение просит еще и libpq.dll хотя эта либа в нем и не используется. Хотя понять я вроде понял. Сборка приложения идет еще и с теми ключами, с которыми собиралась кт. Проскакивают строчки -lmysql -lpq -L C:\mysql\lib\opt -L C:\pgsql\lib. Я так понимаю они берутся из qmake.conf или нет? Вопрос только как от этого избавиться? Неужели придется пересобрать кт без -qt-sql-psql? Я тут опять нагло влезу, думаю меня поправят те кто уже с этим разобрался. Получается, что собрав Qt статически с ключами -qt-sql-psql и -qt-sql-mysql и исходя из того что товарищи с qtcentre правы насчет "the plugin will be "hidden" inside Qt" оба эти драйвера будут статически подлинкованы в билиотеку Qt'а, но потянут за собой libpq.dll и libmysql.dll. И видимо избавиться от libpq.dll в данном случае действительно можно только пересобрав Qt без ключа -qt-sql-psql. Очень интересно ещё вот что: А что будет, если собрать Qt статически но только с ключами -plugin-sql-psql и -plugin-sql-mysql? Получатся ли в этом случае оба этих драйвера в виде отдельных статических библиотек, которые можно использовать как static plugins? Ведь если получатся, то слинковав приложение только с нужным статическим плагином Вы потянете только необходимую ему dll-ку? Или я опять наврал? Название: статическая компиляция QT ??? Отправлено: L.Marvell от Июль 25, 2006, 13:49 Сам еще не проверял, но говорят, что именно так оно и есть.
|