Russian Qt Forum
Ноябрь 23, 2024, 09:58
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Установка, сборка, отладка, тестирование
>
Статическая сборка Qt 5.1.1 на Windows 7
Страниц: [
1
]
2
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Статическая сборка Qt 5.1.1 на Windows 7 (Прочитано 19597 раз)
8Observer8
Гость
Статическая сборка Qt 5.1.1 на Windows 7
«
:
Декабрь 12, 2013, 15:01 »
Привет!
Хочу собрать Qt статически.
Вот мои шаги:
- cкачал и установил
Qt 5.1.1 for Windows 32-bit (MinGW 4.8, OpenGL, 666 MB)
- при установки папку назвал Qt5.1.1_static
- открыл All Programs -> Qt 5.1.1_static -> 5.1.1 -> MinGW 4.8 (32-bit) -> Qt 5.1.1 for Desktop (MinGW 4.8 32 bit)
- в открывшимся терминале, ввёл команду и перешёл в папку
qtbase
Цитировать
cd C:\Qt\Qt5.1.1_static\5.1.1\Src\qtbase
- для конфигурирования ввёл команду:
Цитировать
configure -static -opengl desktop -nomake examples -nomake tests
- потом ввожу эту команду для построения:
Цитировать
mingw32-make
- ввожу команду для установки:
Цитировать
mingw32-make install
Выводится много сообщений о том, что невозможно переписать файл на себя:
Цитировать
xcopy /s /q /y /i C:\Qt\Qt5.1.1_static\5.1.1\Src\qtbase\doc\global C:\Qt\Qt5.1.1_static\5.1.1\
Src\qtbase\doc\global
Запускаю QtCreator, создаю простой проект с диалогом, компилирую в режиме "Release", но exe-файл, естественно получается нестатический.
«
Последнее редактирование: Декабрь 12, 2013, 15:51 от 8Observer8
»
Записан
kambala
Джедай : наставник для всех
Offline
Сообщений: 4747
Re: Статическая сборка Qt 5.1.1 на Windows 7
«
Ответ #1 :
Декабрь 12, 2013, 18:54 »
в configure передай путь установки: -prefix "путь"
а как по мне лучше собирать из «чистых» исходников:
http://download.qt-project.org/official_releases/qt/5.2/5.2.0/single/qt-everywhere-opensource-src-5.2.0.zip
Записан
Изучением C++ вымощена дорога в Qt.
UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
8Observer8
Гость
Re: Статическая сборка Qt 5.1.1 на Windows 7
«
Ответ #2 :
Декабрь 13, 2013, 19:19 »
Большое спасибо! Никаких сообщений об ошибках не было!
Цитировать
configure -static -prefix "C:/Qt/Qt5.1.1_static" -opengl desktop -nomake examples -nomake tests
В настройках QCreator добавил новый профиль с "C:/Qt/Qt5.1.1_static/bin/qmake.exe"
Но при запуске приложения из папки release система требует libgcc_s_dw2-1.dll Нельзя ли собирать приложения так, чтобы код из побочных dll копировался в один exe?
Записан
kambala
Джедай : наставник для всех
Offline
Сообщений: 4747
Re: Статическая сборка Qt 5.1.1 на Windows 7
«
Ответ #3 :
Декабрь 13, 2013, 20:32 »
там надо какие-то правки в mkspecs делать насколько я помню, погугли или поищи на форуме
Записан
Изучением C++ вымощена дорога в Qt.
UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
8Observer8
Гость
Re: Статическая сборка Qt 5.1.1 на Windows 7
«
Ответ #4 :
Декабрь 13, 2013, 20:37 »
Хорошо, спасибо! Как что-нибудь найду, напишу здесь.
«
Последнее редактирование: Декабрь 13, 2013, 20:42 от 8Observer8
»
Записан
8Observer8
Гость
Re: Статическая сборка Qt 5.1.1 на Windows 7
«
Ответ #5 :
Декабрь 13, 2013, 21:44 »
Простое приложение с диалогом просит:
libgcc_s_dw2-1.dll
libwinpthread-1.dll
libstdc++-6.dll
Я их добавил в папку с exe - запускается. Это приложение будет запускаться на всех машинах (позже XP)? Или не факт?
Записан
Alex Custov
Джедай : наставник для всех
Offline
Сообщений: 2063
Re: Статическая сборка Qt 5.1.1 на Windows 7
«
Ответ #6 :
Декабрь 13, 2013, 23:35 »
Цитата: 8Observer8 от Декабрь 13, 2013, 19:19
Но при запуске приложения из папки release система требует libgcc_s_dw2-1.dll Нельзя ли собирать приложения так, чтобы код из побочных dll копировался в один exe?
Перед сборкой Qt нужно зайти в mkspecs/win32-g++/qmake.conf и в переменную QMAKE_LFLAGS вписать "-static -static-libgcc", так что это будет выглядеть так
Цитировать
QMAKE_LFLAGS = -static -static-libgcc
Потом собрать Qt с уже сказанными ключами
Записан
8Observer8
Гость
Re: Статическая сборка Qt 5.1.1 на Windows 7
«
Ответ #7 :
Декабрь 14, 2013, 14:04 »
Огромное спасибо! Ты съэкономил мне кучу времени!
Всё собирается. Только вот qmake.exe пришлось подцеплять из Src, то есть отсюда: C:\Qt\Qt5.2.0\5.2.0\Src\qtbase\bin
Потому что не проходит команда установки: mingw32-make install
Вот такое выдаёт:
Цитировать
C:\Qt\Qt5.2.0\5.2.0\Src\qtbase>mingw32-make install
cd src\ && ( if not exist Makefile C:\Qt\Qt5.2.0\5.2.0\Src\qtbase\bin\qmake C:\Q
t\Qt5.2.0\5.2.0\Src\qtbase\src\src.pro -o Makefile ) && mingw32-make -f Makefile
install
mingw32-make[1]: Entering directory 'C:/Qt/Qt5.2.0/5.2.0/Src/qtbase/src'
cd tools\bootstrap\ && ( if not exist Makefile C:\Qt\Qt5.2.0\5.2.0\Src\qtbase\bi
n\qmake C:\Qt\Qt5.2.0\5.2.0\Src\qtbase\src\tools\bootstrap\bootstrap.pro -o Make
file ) && mingw32-make -f Makefile install
mingw32-make[2]: Entering directory 'C:/Qt/Qt5.2.0/5.2.0/Src/qtbase/src/tools/bo
otstrap'
mingw32-make -f Makefile.Release install
mingw32-make[3]: Entering directory 'C:/Qt/Qt5.2.0/5.2.0/Src/qtbase/src/tools/bo
otstrap'
Синтаксическая ошибка в имени файла, имени папки или метке тома.
Makefile.Release:10404: recipe for target 'install_target' failed
mingw32-make[3]: *** [install_target] Error 1
mingw32-make[3]: Leaving directory 'C:/Qt/Qt5.2.0/5.2.0/Src/qtbase/src/tools/boo
tstrap'
Makefile:44: recipe for target 'release-install' failed
mingw32-make[2]: *** [release-install] Error 2
mingw32-make[2]: Leaving directory 'C:/Qt/Qt5.2.0/5.2.0/Src/qtbase/src/tools/boo
tstrap'
Makefile:68: recipe for target 'sub-bootstrap-install_subtargets' failed
mingw32-make[1]: *** [sub-bootstrap-install_subtargets] Error 2
mingw32-make[1]: Leaving directory 'C:/Qt/Qt5.2.0/5.2.0/Src/qtbase/src'
makefile:53: recipe for target 'sub-src-install_subtargets' failed
mingw32-make: *** [sub-src-install_subtargets] Error 2
Я ожидал, что если выбрать режим "Release", то exe-файл будет находиться здесь: build-HelloQt-Desktop_Qt_5_2_0_Static_MinGW_32bit-Выпуск\release
А он находится здесь: build-HelloQt-Desktop_Qt_5_2_0_Static_MinGW_32bit-Выпуск\debug
И простой диалог весит 228 МБайт.
Это нормально?
«
Последнее редактирование: Декабрь 14, 2013, 15:31 от 8Observer8
»
Записан
Bepec
Гость
Re: Статическая сборка Qt 5.1.1 на Windows 7
«
Ответ #8 :
Декабрь 14, 2013, 14:17 »
Ага. Потому что у тебя видимо собрались все библиотеки десктопные в статику
Хочешь меньше - надо выбирать от чего отказаться
Записан
8Observer8
Гость
Re: Статическая сборка Qt 5.1.1 на Windows 7
«
Ответ #9 :
Декабрь 14, 2013, 15:25 »
Спасибо за ответ. Видимо, так. Меня смущает, что exe-файл создаётся в папке Debug, а не Release (хотя я выбираю релиз). Вот в этой папке: build-HelloQt-Desktop_Qt_5_2_0_Static_MinGW_32bit-Выпуск\debug
Я если честно, немного запутался. Получается, что у нас есть две папки:
build-HelloQt-Desktop_Qt_5_2_0_Static_MinGW_32bit-Отладка
build-HelloQt-Desktop_Qt_5_2_0_Static_MinGW_32bit-Выпуск
И в этих папках ещё release и debug. Странные комбинации получаются: Отладка-release, Отладка-debug, Выпуск-release, Выпуск-debug
А в QtCreator я могу выбрать только Отладка или Выпуск. Когда я выбираю Выпуск, то у меня получается Выпуск-debug. Я думаю, что если бы это был Выпуск-release, то exe весил бы намного меньше.
«
Последнее редактирование: Декабрь 14, 2013, 15:26 от 8Observer8
»
Записан
Bepec
Гость
Re: Статическая сборка Qt 5.1.1 на Windows 7
«
Ответ #10 :
Декабрь 14, 2013, 15:56 »
Возможно. Я не знаток креатора, пусть другие подскажут
Записан
lesav
Частый гость
Offline
Сообщений: 235
qnx.org.ru
Re: Статическая сборка Qt 5.1.1 на Windows 7
«
Ответ #11 :
Декабрь 14, 2013, 20:45 »
Это все баги в QtCreator-е
Бывает что при выборе этапа сборки криэйтор не выставляет флаг "CONFIG+=release"
Нужно выбрать в полях
1
Release
И если в
2
нет записи "CONFIG+=release"
добавить онную в
3
(для стопроцентного результата можно еще добавить туда CONFIG-=debug)
Записан
http://qnx.org.ru/
8Observer8
Гость
Re: Статическая сборка Qt 5.1.1 на Windows 7
«
Ответ #12 :
Декабрь 15, 2013, 10:17 »
lesav, спасибо тебе огромное! Теперь мой exe-файл HelloQt.exe весит всего 13 МБайт
Запускается прямо из папки! Нужно теперь протестить будет ли запускаться на других машинах, где нет MinGW, Qt и т.д.
У меня два компьютера. Ноутбук Asus X53S с Win 7 и стационарка 2007 года с XP. На старой машине Qt собирается, только вот установка не проходит. Я так понял, что при установке нужные файлы копируются в указанную при конфигурировании папку, в моём случае в "C:/Qt/Qt5.2.0_static". Я описал выше, какие были ошибки. Но на это можно не отвечать, так как я qmake.exe подцепил вот отсюда: C:\Qt\Qt5.2.0\5.2.0\Src\qtbase\bin\qmake.exe Теперь я могу собирать exe-файлы на стационарке и будем надеяться, что они будут без проблем запускаться на машинах пользователей. Работаю я на ноутбуке....
А вот на ноутбуке не получается сконфиругировать. Вот мои шаги:
- открываю файл C:\Qt\Qt5.2.0\5.2.0\Src\qtbase\mkspecs\win32-g++\qmake.conf и вношу изменение:
Цитировать
QMAKE_LFLAGS = -static -static-libgcc
- открываю терминал All Programs -> Qt 5.2.0 -> 5.2.0 -> MinGW 4.8 (32-bit) -> Qt 5.2.0 for Desktop (MinGW 4.8 32 bit)
- ввожу команды:
Цитировать
cd c:\Qt\Qt5.2.0\5.2.0\Src\qtbase
Цитировать
configure -static -prefix “C:/Qt/Qt5.2.0_static” -opengl desktop -nomake examples -nomake tests
Вот какой результат:
Цитировать
c:\Qt\Qt5.2.0\5.2.0\Src\qtbase>configure -static -prefix "C:/Qt/Qt5.2.0_static"
-opengl desktop -nomake examples -nomake tests
Which edition of Qt do you want to use ?
Type 'c' if you want to use the Commercial Edition.
Type 'o' if you want to use the Open Source Edition.
o
This is the Qt for Windows Open Source Edition.
You are licensed to use this software under the terms of
the GNU Lesser General Public License (LGPL) version 2.1.
Type 'L' to view the Lesser GNU General Public License version 2.1 (LGPLv2.1).
Type 'y' to accept this license offer.
Type 'n' to decline this license offer.
Do you accept the terms of the license?
y
Creating qmake...
g++ -o "C:\Qt\Qt5.2.0\5.2.0\Src\qtbase/bin/qmake.exe" project.o option.o propert
y.o main.o ioutils.o proitems.o qmakevfs.o qmakeglobals.o qmakeparser.o qmakeeva
luator.o qmakebuiltins.o makefile.o unixmake2.o unixmake.o mingw_make.o winmakef
ile.o projectgenerator.o meta.o makefiledeps.o metamakefile.o xmloutput.o pbuild
er_pbx.o msvc_vcproj.o msvc_vcxproj.o msvc_nmake.o msvc_objectmodel.o msbuild_ob
jectmodel.o gbuild.o cesdkhandler.o qtextcodec.o qutfcodec.o qstring.o qstringbu
ilder.o qtextstream.o qiodevice.o qmalloc.o qglobal.o qarraydata.o qbytearray.o
qbytearraymatcher.o qdatastream.o qbuffer.o qlist.o qfiledevice.o qfile.o qfiles
ystementry.o qfilesystemengine.o qfsfileengine.o qfsfileengine_iterator.o qregex
p.o qvector.o qbitarray.o qdir.o qdiriterator.o quuid.o qhash.o qfileinfo.o qdat
etime.o qstringlist.o qabstractfileengine.o qtemporaryfile.o qmap.o qmetatype.o
qsettings.o qsystemerror.o qlibraryinfo.o qvariant.o qvsnprintf.o qlocale.o qloc
ale_tools.o qlinkedlist.o qnumeric.o qcryptographichash.o qxmlstream.o qxmlutils
.o qlogging.o qjson.o qjsondocument.o qjsonparser.o qjsonarray.o qjsonobject.o q
jsonvalue.o qfilesystemengine_win.o qfilesystemiterator_win.o qfsfileengine_win.
o qlocale_win.o qsettings_win.o qsystemlibrary.o registry.o -static -s -lole32 -
luuid -ladvapi32 -lkernel32
Makefile:157: recipe for target 'C:\Qt\Qt5.2.0\5.2.0\Src\qtbase/bin/qmake.exe' f
ailed
mingw32-make: *** [C:\Qt\Qt5.2.0\5.2.0\Src\qtbase/bin/qmake.exe] Error 1
rm -f project.o option.o property.o main.o ioutils.o proitems.o qmakevfs.o qmake
globals.o qmakeparser.o qmakeevaluator.o qmakebuiltins.o makefile.o unixmake2.o
unixmake.o mingw_make.o winmakefile.o projectgenerator.o meta.o makefiledeps.o m
etamakefile.o xmloutput.o pbuilder_pbx.o msvc_vcproj.o msvc_vcxproj.o msvc_nmake
.o msvc_objectmodel.o msbuild_objectmodel.o gbuild.o cesdkhandler.o qtextcodec.o
qutfcodec.o qstring.o qstringbuilder.o qtextstream.o qiodevice.o qmalloc.o qglo
bal.o qarraydata.o qbytearray.o qbytearraymatcher.o qdatastream.o qbuffer.o qlis
t.o qfiledevice.o qfile.o qfilesystementry.o qfilesystemengine.o qfsfileengine.o
qfsfileengine_iterator.o qregexp.o qvector.o qbitarray.o qdir.o qdiriterator.o
quuid.o qhash.o qfileinfo.o qdatetime.o qstringlist.o qabstractfileengine.o qtem
poraryfile.o qmap.o qmetatype.o qsettings.o qsystemerror.o qlibraryinfo.o qvaria
nt.o qvsnprintf.o qlocale.o qlocale_tools.o qlinkedlist.o qnumeric.o qcryptograp
hichash.o qxmlstream.o qxmlutils.o qlogging.o qjson.o qjsondocument.o qjsonparse
r.o qjsonarray.o qjsonobject.o qjsonvalue.o qfilesystemengine_win.o qfilesystemi
terator_win.o qfsfileengine_win.o qlocale_win.o qsettings_win.o qsystemlibrary.o
registry.o
process_begin: CreateProcess(NULL, rm -f project.o option.o property.o main.o io
utils.o proitems.o qmakevfs.o qmakeglobals.o qmakeparser.o qmakeevaluator.o qmak
ebuiltins.o makefile.o unixmake2.o unixmake.o mingw_make.o winmakefile.o project
generator.o meta.o makefiledeps.o metamakefile.o xmloutput.o pbuilder_pbx.o msvc
_vcproj.o msvc_vcxproj.o msvc_nmake.o msvc_objectmodel.o msbuild_objectmodel.o g
build.o cesdkhandler.o qtextcodec.o qutfcodec.o qstring.o qstringbuilder.o qtext
stream.o qiodevice.o qmalloc.o qglobal.o qarraydata.o qbytearray.o qbytearraymat
cher.o qdatastream.o qbuffer.o qlist.o qfiledevice.o qfile.o qfilesystementry.o
qfilesystemengine.o qfsfileengine.o qfsfileengine_iterator.o qregexp.o qvector.o
qbitarray.o qdir.o qdiriterator.o quuid.o qhash.o qfileinfo.o qdatetime.o qstri
nglist.o qabstractfileengine.o qtemporaryfile.o qmap.o qmetatype.o qsettings.o q
systemerror.o qlibraryinfo.o qvariant.o qvsnprintf.o qlocale.o qlocale_tools.o q
linkedlist.o qnumeric.o qcryptographichash.o qxmlstream.o qxmlutils.o qlogging.o
qjson.o qjsondocument.o qjsonparser.o qjsonarray.o qjsonobject.o qjsonvalue.o q
filesystemengine_win.o qfilesystemiterator_win.o qfsfileengine_win.o qlocale_win
.o qsettings_win.o qsystemlibrary.o registry.o, ...) failed.
make (e=2): The system cannot find the file specified.
Makefile:163: recipe for target 'clean' failed
mingw32-make: *** [clean] Error 2
Cleaning qmake failed, return code 2
Записан
Serr500
Гость
Re: Статическая сборка Qt 5.1.1 на Windows 7
«
Ответ #13 :
Декабрь 15, 2013, 10:30 »
Удалите всё содержимое папки исходников и скопируйте исходники заново. Ошибка связана с тем, что остались файлы от предыдущего конфигурования.
Записан
kambala
Джедай : наставник для всех
Offline
Сообщений: 4747
Re: Статическая сборка Qt 5.1.1 на Windows 7
«
Ответ #14 :
Декабрь 15, 2013, 12:20 »
еще в командной строке лучше все пути указывать через обратный слэш, винда такая винда
Записан
Изучением C++ вымощена дорога в Qt.
UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Страниц: [
1
]
2
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
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 сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...