Russian Qt Forum
Ноябрь 18, 2024, 20:37 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: как же побороть статическую сборку?...  (Прочитано 5354 раз)
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« : Май 28, 2010, 15:12 »

проект близится к состоянию альфа, собственно, уже практически подошел к ней, надо передавать на тестирование, но до сих пор тянется непонятный косяк со статической сборкой в Win, при помощи QtCreator

с самого начала вроде все было сделано, как сказано в документации, получены статические библиотеки, и даже они по-началу использовались в VisualStudio для статической сборки, которая нормально работала (собирал библиотеки не я, поэтому не знаю точно, что там делали)

потом проект продолжился с QtCreator, в момент начала был 1.2.1, и так он пока и остался, не было желания коней на переправе менять... но с Креатором какой-то непонятный косяк - все вроде настроено на статическую сборку, есть флаг QMAKE_LFLAGS += -static, используется еще дополнительная библиотека с ключом CONFIG += staticlib, Qt библиотеки вроде тоже статические

результат странный - приложение собирается явно статически, его размер более 9 МБайт, но при запуске оно все равно требует наличия библиотек QtGui и mingw  Непонимающий

если собирать динамически, то размер приложения получается несколько сотен килобайт, и также точно достаточно ему положить эти 2 библиотеки, чтобы оно заработало

это при сборке с отладчиком... если же собирать release, то получается тоже несколько сотен килобайт, но тут явно динамически, и разумеется тоже требует

где собака порылась?? просьба помочь разобраться по полочкам, где что надо настроить, и что сделать, чтобы от этих библиотек избавиться (+150 Мбайт тащатся)
Записан

2^7-1 == 127, задумайтесь...
Amigo_sa
Гость
« Ответ #1 : Май 28, 2010, 17:54 »

Есть удобная программка для винды - DependencyWalker. Она сразу покажет какая из подключенных библиотек зависит от указанных длл. Скорее всего не все компоненты собраны статически...
Записан
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #2 : Май 31, 2010, 08:12 »

да вот проблема в том, что собирал другой человек, и он уже не помнит что именно делал... причем у него долго не получалось вообще проект собрать, компоновка не выполнялась, он не шибко опытный, похоже нашаманил что-то с библиотеками  Злой

теперь надо постараться это исправить, и пока не ясно как лучше, может имеет смысл заодно перескочить на последнюю версию Qt, но боязно, как бы в проекте что-нибудь не посыпалось, больше 25000 строк уже работает, и еще дофига делать
Записан

2^7-1 == 127, задумайтесь...
Amigo_sa
Гость
« Ответ #3 : Май 31, 2010, 11:20 »

да вот проблема в том, что собирал другой человек, и он уже не помнит что именно делал... причем у него долго не получалось вообще проект собрать, компоновка не выполнялась, он не шибко опытный, похоже нашаманил что-то с библиотеками  Злой
Так можно посмотреть, какие библиотеки собраны с зависимостями
Записан
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #4 : Май 31, 2010, 17:30 »

да и так понятно же, ну показывает эта программа зависимости от тех библиотек, которые тянутся за приложением, от Qt их всего 3 - QtCored4, QtGUId4 и mingwm10, больше никаких зависимостей нет - ничего нового с ее помощью узнать не удается

не понятно, почему приложение собирается вроде бы статически, судя по размеру, но библиотеки за собой тащит
Записан

2^7-1 == 127, задумайтесь...
b-s-a
Гость
« Ответ #5 : Май 31, 2010, 23:14 »

нефига не статически. просто в бинарниках содержится отладочная информация. Сделай strip --strip-unneeded myprog.exe и увидишь какой реальный объем.

Но вообще-то, отладочный вариант нужен именно для отладки и не предполагает распространения. Кстати, релизный вариант компонуется с QtCore4.dll, а не QtCored4.dll.

Проверь, что за профиль Qt у тебя выбран. Скорее всего, у тебя для проекта выбран профиль динамической Qt!!!
Записан
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #6 : Июнь 01, 2010, 08:16 »

какие должны быть в наличии библиотеки для статической сборки? файлы lib*.a в каталоге \Qt\20??.??\qt\lib ? они присутствуют

Проверь, что за профиль Qt у тебя выбран. Скорее всего, у тебя для проекта выбран профиль динамической Qt!!!

где это выбирается? в Проекты, ни в одной закладке профиль динамический/статический не выбирается
может для Release ключ -static нужен?
Записан

2^7-1 == 127, задумайтесь...
b-s-a
Гость
« Ответ #7 : Июнь 01, 2010, 16:57 »

заходишь в инструменты - параметры - qt4. Там добавляешь свой статический профиль Qt. Затем в настройках проекта выбираешь этот профиль.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.17 секунд. Запросов: 23.