Russian Qt Forum
Ноябрь 18, 2024, 20:37
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Qt-инструментарий
>
как же побороть статическую сборку?...
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: как же побороть статическую сборку?... (Прочитано 5354 раз)
Гурман
Гуру общения
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
Гость
Re: как же побороть статическую сборку?...
«
Ответ #1 :
Май 28, 2010, 17:54 »
Есть удобная программка для винды -
DependencyWalker
. Она сразу покажет какая из подключенных библиотек зависит от указанных длл. Скорее всего не все компоненты собраны статически...
Записан
Гурман
Гуру общения
Offline
Сообщений: 1442
Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12
Re: как же побороть статическую сборку?...
«
Ответ #2 :
Май 31, 2010, 08:12 »
да вот проблема в том, что собирал другой человек, и он уже не помнит что именно делал... причем у него долго не получалось вообще проект собрать, компоновка не выполнялась, он не шибко опытный, похоже нашаманил что-то с библиотеками
теперь надо постараться это исправить, и пока не ясно как лучше, может имеет смысл заодно перескочить на последнюю версию Qt, но боязно, как бы в проекте что-нибудь не посыпалось, больше 25000 строк уже работает, и еще дофига делать
Записан
2^7-1 == 127, задумайтесь...
Amigo_sa
Гость
Re: как же побороть статическую сборку?...
«
Ответ #3 :
Май 31, 2010, 11:20 »
Цитата: Гурман от Май 31, 2010, 08:12
да вот проблема в том, что собирал другой человек, и он уже не помнит что именно делал... причем у него долго не получалось вообще проект собрать, компоновка не выполнялась, он не шибко опытный, похоже нашаманил что-то с библиотеками
Так можно посмотреть, какие библиотеки собраны с зависимостями
Записан
Гурман
Гуру общения
Offline
Сообщений: 1442
Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12
Re: как же побороть статическую сборку?...
«
Ответ #4 :
Май 31, 2010, 17:30 »
да и так понятно же, ну показывает эта программа зависимости от тех библиотек, которые тянутся за приложением, от Qt их всего 3 - QtCored4, QtGUId4 и mingwm10, больше никаких зависимостей нет - ничего нового с ее помощью узнать не удается
не понятно, почему приложение собирается вроде бы статически,
судя по размеру,
но библиотеки за собой тащит
Записан
2^7-1 == 127, задумайтесь...
b-s-a
Гость
Re: как же побороть статическую сборку?...
«
Ответ #5 :
Май 31, 2010, 23:14 »
нефига не статически. просто в бинарниках содержится отладочная информация. Сделай strip --strip-unneeded myprog.exe и увидишь какой реальный объем.
Но вообще-то, отладочный вариант нужен именно для отладки и не предполагает распространения. Кстати, релизный вариант компонуется с QtCore4.dll, а не QtCore
d
4.dll.
Проверь, что за профиль Qt у тебя выбран. Скорее всего, у тебя для проекта выбран профиль динамической Qt!!!
Записан
Гурман
Гуру общения
Offline
Сообщений: 1442
Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12
Re: как же побороть статическую сборку?...
«
Ответ #6 :
Июнь 01, 2010, 08:16 »
какие должны быть в наличии библиотеки для статической сборки? файлы lib*.a в каталоге \Qt\20??.??\qt\lib ? они присутствуют
Цитата: b-s-a от Май 31, 2010, 23:14
Проверь, что за профиль Qt у тебя выбран. Скорее всего, у тебя для проекта выбран профиль динамической Qt!!!
где это выбирается? в Проекты, ни в одной закладке профиль динамический/статический не выбирается
может для Release ключ -static нужен?
Записан
2^7-1 == 127, задумайтесь...
b-s-a
Гость
Re: как же побороть статическую сборку?...
«
Ответ #7 :
Июнь 01, 2010, 16:57 »
заходишь в инструменты - параметры - qt4. Там добавляешь свой статический профиль Qt. Затем в настройках проекта выбираешь этот профиль.
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...