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

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

Страниц: 1 [2] 3 4 5   Вниз
  Печать  
Автор Тема: Проблемы после сборки Qt в статику  (Прочитано 39718 раз)
G-virus
Гость
« Ответ #15 : Декабрь 22, 2009, 15:35 »

Просидев до 3 часов ночи, собирая Qt в статику заного, я сегодня запускаю Qt Creator, Запускаю статическую сборку проекта и что же я вижу!!! Злой Простая gui-программа (терминалка собственного приготовления) при предыщей статической сборке занимала 7,69 Мб. Это еще куда не шло. Когда я пересобрал библу, перед этим приписав в файле C:\Qt\2009.05\qt\mkspecs\win32-g++\qmake.conf к константе
Код:
QMAKE_CXXFLAGS_RELEASE   = $$QMAKE_CXXFLAGS_RELEASE 

выражение -static-libgcc
то есть получилось так:
Код:
QMAKE_CXXFLAGS_RELEASE   = $$QMAKE_CXXFLAGS_RELEASE -static-libgcc
Я выполняю сборку того же проекта, он начинает весить 8,69 Мб, и при попытке запустить опять возникает чертова ошибка: Приложению не удалось запуститься, поскольку libgcc_s_dw2-1.dll не был найден......... Злой
Как мне быыыыыть? Плачущий

Записан
Dendy
Гость
« Ответ #16 : Декабрь 22, 2009, 16:27 »

Собирать весь Qt, чтобы проверить исчезла ли зависимость, не нужно. Достаточно сделать:

Код:
cd src\corelib
nmake

И после собрать любую программку, чтобы проверить.

Сегодня как доберусь до компьютера проверю сам.
Записан
G-virus
Гость
« Ответ #17 : Декабрь 22, 2009, 16:35 »

А почему размер файла увеличился аж на целый Мб? И интересно, почему же в версии 4.6.0 такие проблемы со статикой  Грустный
Записан
Dendy
Гость
« Ответ #18 : Декабрь 22, 2009, 16:40 »

Потому что в Qt часто используется динамическое связывание, когда на этапе компиляции неизвестно какая именно функция будет вызвана. Как следствие - в зависимостях оказывается чуть ли не вся библиотека.
Записан
G-virus
Гость
« Ответ #19 : Декабрь 22, 2009, 16:47 »

Ну вот я пытался, чтобы у меня Debug был динамический, а Release статический. с 4.5.3 получалось, а тут никак  Грустный немогу начать работу
Записан
Dendy
Гость
« Ответ #20 : Декабрь 22, 2009, 17:04 »

Оказывается это опция не компилятора, а линковщика, а значит флаг нужно было добавлять сюда:

QMAKE_LFLAGS_RELEASE = -Wl,-s,-static-libgcc

А из QMAKE_CXXFLAGS_RELEASE - убрать.
Записан
G-virus
Гость
« Ответ #21 : Декабрь 22, 2009, 17:13 »

Оказывается это опция не компилятора, а линковщика, а значит флаг нужно было добавлять сюда:

QMAKE_LFLAGS_RELEASE = -Wl,-s,-static-libgcc

А из QMAKE_CXXFLAGS_RELEASE - убрать.

а теперь стало появляться такое сообщение при сборке Release:
Код
C++ (Qt)
c:/qt/2009.05/mingw/bin/../lib/gcc/mingw32/4.4.0/../../../../mingw32/bin/ld.exe: : No such file: No such file or directory
collect2: ld returned 1 exit status
mingw32-make[1]: *** [release\ServerGui.exe] Error 1
mingw32-make: *** [release] Error 2
Завершено с кодом возврата 2.
Ошибка во время сборки проекта ServerGui
Во время выполнения сборки на этапе 'Make'
 

А файл вроде на месте
Записан
G-virus
Гость
« Ответ #22 : Декабрь 22, 2009, 17:16 »

Так мне опять всю библу пересобирать?!  Непонимающий ААААА Шокированный
Записан
Dendy
Гость
« Ответ #23 : Декабрь 22, 2009, 17:33 »

Чтобы пересобрать QtCore с нуля хватает 5 минут с учётом конфигурирования.
Записан
G-virus
Гость
« Ответ #24 : Декабрь 22, 2009, 17:40 »

Чтобы пересобрать QtCore с нуля хватает 5 минут с учётом конфигурирования.

Я чет не совсем пойму как собрать именно QtCore)
Записан
Dendy
Гость
« Ответ #25 : Декабрь 22, 2009, 18:20 »

Код:
cd src\tools\bootstrap
..\..\..\bin\qmake && make
cd ..\moc
..\..\..\bin\qmake && make
cd ..\rcc
..\..\..\bin\qmake && make
cd ..\uic
..\..\..\bin\qmake && make
cd ..\..\corelib
..\..\bin\qmake && make
Записан
G-virus
Гость
« Ответ #26 : Декабрь 22, 2009, 20:00 »

значит мнее сделать mingw32-make.exe confclean а потом вот эти команды?

А так и вводить cd cd src\tools\bootstrap\..\..\..\bin\qmake && make??
(Сори за такие вопросы, просто не хочу тыщу раз переделывать Улыбающийся )
Записан
Dendy
Гость
« Ответ #27 : Декабрь 22, 2009, 20:15 »

Это нужно выполнить сразу после configure.exe, вместо make -> mingw32-make (я так понимаю у вас именно он), а вызов qmake можно вообще убрать, поскольку мейкфайлы уже были собраны. Я обычно вообще забиваю на configure.exe (задаёт глупый вопрос про лицензию и тормозит, собирая мейкфайлы для всего подряд) и qmake собираю сам:

Код:
сd qmake
make -f Makefile.win32-g++ QMAKESPEC=win32-g++ QMAKE_OPENSOURCE_EDITION=1

Но у вас должно быть примерно так:

Код:
configure.exe (your favorite arguments list)
cd src\tools\bootstrap
mingw32-make
cd ..\moc
mingw32-make
cd ..\rcc
mingw32-make
cd ..\uic
mingw32-make
cd ..\..\corelib
mingw32-make
Записан
G-virus
Гость
« Ответ #28 : Декабрь 22, 2009, 20:24 »

Ок. Спасибо  Улыбающийся Щас попробую
Записан
G-virus
Гость
« Ответ #29 : Декабрь 22, 2009, 20:54 »

Странно. При сборке moc он выдает ошибку на отсутсвие ld.exe (хотя такой файл есть) Непонимающий
Записан
Страниц: 1 [2] 3 4 5   Вверх
  Печать  
 
Перейти в:  


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