Russian Qt Forum
Ноябрь 24, 2024, 22:24
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Установка, сборка, отладка, тестирование
>
Как в qt-sdk-win собрать проект со статическими библиотеками
Страниц: [
1
]
2
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Как в qt-sdk-win собрать проект со статическими библиотеками (Прочитано 17900 раз)
Кутенок
Гость
Как в qt-sdk-win собрать проект со статическими библиотеками
«
:
Сентябрь 04, 2009, 14:57 »
Сильно не пинайте. Я прочитал несколько тем и статью в Вики, но все равно не понятно
Ткните пальцем, где надо поставить галочку или что-то написать.
Записан
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: Как в qt-sdk-win собрать проект со статическими библиотеками
«
Ответ #1 :
Сентябрь 04, 2009, 16:34 »
В вики все хорошо написано. Что именно не понятно?
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Кутенок
Гость
Re: Как в qt-sdk-win собрать проект со статическими библиотеками
«
Ответ #2 :
Сентябрь 04, 2009, 16:58 »
Цитировать
Ключиком -static поставленая задача выполняется не полностью
мне не понятно, где этот ключик надо прописать
Записан
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: Как в qt-sdk-win собрать проект со статическими библиотеками
«
Ответ #3 :
Сентябрь 04, 2009, 17:43 »
В корневике Qt есть файлик configure. Вот его и нужно запускать, передав ему параметр -static.
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Joss
Гость
Re: Как в qt-sdk-win собрать проект со статическими библиотеками
«
Ответ #4 :
Сентябрь 05, 2009, 12:40 »
Краткое переложение:
1. Установить в PATH путь к mingw, например:
D:\Progs\Qt\qtcreator\mingw\bin\
2. Скачать
http://get.qtsoftware.com/qt/source/qt-win-opensource-src-4.5.2.zip
3. Добавить (чтобы убрать зависимость от mingwm10.dll) в файле
<QTDIR>\mkspecs\win32-g++\qmake.conf
в строчку
QMAKE_LFLAGS = -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc
ключ
-static
4. Выполнить
configure -static -platform win32-g++ -release -no-exceptions
5. Выполнить
mingw32-make sub-src
Если ты уже собирал Qt с какими-то ключиками, а теперь хочешь собрать с другими, то сначала надо сделать
make confclean
а потом вcё по новой:
configure
с нужными ключами,
make
.
Записан
Кутенок
Гость
Re: Как в qt-sdk-win собрать проект со статическими библиотеками
«
Ответ #5 :
Сентябрь 07, 2009, 15:59 »
Спасибо за ответы. Если я правильно понял, то вы предлагаете мне самостоятельно собрать Qt, но меня интересует именно qt-sdk-win, что я отразил в названии темы. Возможно ли установив только qt-sdk-win, и не скачивая отдельно библиотеку, собирать программы, которые не нуждаются в mingwm10.dll, QtCore4.dll, QtGui4.dll и т.д.
У меня установлен qt-sdk-win-opensource-2009.03.1
Я прописал в файле
C:\Qt\2009.03\qt\mkspecs\win32-g++\qmake.conf
строку
QMAKE_LFLAGS = -static -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc
Я запускал
C:\Qt\2009.03\qt\configure.exe -static
запускал
C:\Qt\2009.03\qt\configure.exe -static -platform win32-g++ -release -no-exceptions
Запускал
C:\Qt\2009.03\mingw\bin\mingw32-make.exe confclean
потом
C:\Qt\2009.03\qt\configure.exe -static -platform win32-g++ -release -no-exceptions
потом
C:\Qt\2009.03\mingw\bin\mingw32-make.exe sub-src
Ничего не помогает Собранные в qt-sdk-win программы все равно требуют dll
«
Последнее редактирование: Сентябрь 07, 2009, 16:02 от Кутенок
»
Записан
Joss
Гость
Re: Как в qt-sdk-win собрать проект со статическими библиотеками
«
Ответ #6 :
Сентябрь 07, 2009, 16:18 »
Я же Вам написал - надо сделать все по шагам.
Буквально - надо собрать статическую версию Qt из исходников! Только тогда будет возможность собирать на ее основе релизные приложения, не зависящие от библиотек.
На ее основе
, имейте ввиду! Т.е. после сборки у Вас будет две библиотеки - обычная, которую Вы скачали ранее, и собраная Вами - при компиляции приложения в релиз указываете именно вторую Qt, собранную Вами по вышеуказанным шагам. Для дебажных целей оставляйте стандартную библиотеку.
Записан
Кутенок
Гость
Re: Как в qt-sdk-win собрать проект со статическими библиотеками
«
Ответ #7 :
Сентябрь 08, 2009, 10:20 »
Большое спасибо, Joss Теперь мне все понятно Я не понимал, что
обязательно надо собрать Qt из исходников
.
Записан
Кутенок
Гость
Re: Как в qt-sdk-win собрать проект со статическими библиотеками
«
Ответ #8 :
Сентябрь 08, 2009, 10:36 »
Цитата: Wiki
Прежде чем собрать приложение статически мы должны собрать статически Qt.
Эту фразу из вики для таких как я лучше выделить жирным шрифтом
Записан
Noise
Гость
Re: Как в qt-sdk-win собрать проект со статическими библиотеками
«
Ответ #9 :
Ноябрь 06, 2009, 21:10 »
Помогите мне, пытаюсь тоже скомпилировать библиотеку, но не получается.
Вот так я пытаюсь это сделать!
Цитировать
@echo off
rem
rem This file is generated
rem
echo Setting up a MinGW/Qt only environment...
echo -- QTDIR set to C:\Qt\4.5.3
echo -- PATH set to C:\Qt\4.5.3\bin
echo -- Adding C:\MinGW\bin to PATH
echo -- Adding %SystemRoot%\System32 to PATH
echo -- QMAKESPEC set to win32-g++
set QTDIR=C:\Qt\4.5.3
set PATH=C:\Qt\4.5.3\bin
set PATH=%PATH%;C:\MinGW\bin
set PATH=%PATH%;%SystemRoot%\System32
set QMAKESPEC=win32-g++
if not "%1"=="compile_debug" goto END
cd %QTDIR%
echo This will configure and compile qt in debug.
echo The release libraries will not be recompiled.
pause
mingw32-make clean
configure -static -plugin-sql-sqlite -plugin-sql-odbc -qt-libpng -qt-libjpeg
cd %QTDIR%\src
#cd C:\Qt\4.5.3\src
qmake
mingw32-make debug
:END
а вот такое мне выводиться
Цитировать
g++ -static -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-ps
eudo-reloc -Wl,-subsystem,console -mthreads -Wl -o ..\..\..\bin\uic3.exe object_
script.uic3.Debug -L"c:\Qt\4.5.3\lib" -L"c:\Qt\4.5.3\lib" -lQt3Supportd -lQtSql
d -lQtXmld -lQtGuid -lQtNetworkd -lgdi32 -lcomdlg32 -loleaut32 -limm32 -lwinmm -
lwinspool -lmsimg32 -lQtCored -lkernel32 -luser32 -lshell32 -luuid -lole32 -ladv
api32 -lws2_32
c:\Qt\4.5.3\lib\libQtGuid.a(qapplication.o)(.text+0x10c): In function `Z13initRe
sourcesv':
C:/Qt/4.5.3/src/gui/kernel/qapplication.cpp:111: undefined reference to `qInitRe
sources_qpaintengine_d3d()'
c:\Qt\4.5.3\lib\libQtGuid.a(qwidget_win.o)(.text+0x9350): In function `Z13_qt_d3
dEnginev':
C:/Qt/4.5.3/src/gui/kernel/qwidget_win.cpp:1938: undefined reference to `QDirect
3DPaintEngine::QDirect3DPaintEngine()'
c:\Qt\4.5.3\lib\libQtGuid.a(qwidget_win.o)(.text+0x9461): In function `Z18cleanu
p_d3d_enginev':
C:/Qt/4.5.3/src/gui/kernel/qwidget_win.cpp:1944: undefined reference to `QDirect
3DPaintEngine::cleanup()'
c:\Qt\4.5.3\lib\libQtGuid.a(qwidget_win.o)(.text+0x94b9): In function `ZNK7QWidg
et11paintEngineEv':
C:/Qt/4.5.3/src/gui/kernel/qwidget_win.cpp:2065: undefined reference to `QDirect
3DPaintEngine::hasDirect3DSupport()'
c:\Qt\4.5.3\lib\libQtGuid.a(qwidget_win.o)(.text+0x94ed):C:/Qt/4.5.3/src/gui/ker
nel/qwidget_win.cpp:2071: undefined reference to `QDirect3DPaintEngine::setFlush
OnEnd(bool)'
c:\Qt\4.5.3\lib\libQtGuid.a(qwidget_win.o)(.text+0x9502):C:/Qt/4.5.3/src/gui/ker
nel/qwidget_win.cpp:2073: undefined reference to `QDirect3DPaintEngine::setFlush
OnEnd(bool)'
c:\Qt\4.5.3\lib\libQtGuid.a(qwidget_win.o)(.text+0x95b9): In function `ZN14QWidg
etPrivate30createDefaultWindowSurface_sysEv':
C:/Qt/4.5.3/src/gui/kernel/qwidget_win.cpp:2107: undefined reference to `QDirect
3DPaintEngine::hasDirect3DSupport()'
c:\Qt\4.5.3\lib\libQtGuid.a(qwidget_win.o)(.text+0x95e5):C:/Qt/4.5.3/src/gui/ker
nel/qwidget_win.cpp:2109: undefined reference to `QD3DWindowSurface::QD3DWindowS
urface(QWidget*)'
collect2: ld returned 1 exit status
mingw32-make[2]: *** [..\..\..\bin\uic3.exe] Error 1
mingw32-make[2]: Leaving directory `C:/Qt/4.5.3/src/tools/uic3'
mingw32-make[1]: *** [debug] Error 2
mingw32-make[1]: Leaving directory `C:/Qt/4.5.3/src/tools/uic3'
mingw32-make: *** [debug-C__Qt_4_5_3_src_tools_uic3] Error 2
C:\Qt\4.5.3\src>
Записан
lit-uriy
Джедай : наставник для всех
Offline
Сообщений: 3880
Re: Как в qt-sdk-win собрать проект со статическими библиотеками
«
Ответ #10 :
Ноябрь 06, 2009, 22:29 »
>>configure -static -plugin-sql-sqlite -plugin-sql-odbc -qt-libpng -qt-libjpeg
При статической сборке, плагины работать не будут. Надо их внутрь Qt совать:
configure -static -qt-sql-sqlite -qt-sql-odbc -qt-libpng -qt-libjpeg
Записан
Юра.
Noise
Гость
Re: Как в qt-sdk-win собрать проект со статическими библиотеками
«
Ответ #11 :
Ноябрь 06, 2009, 23:50 »
спасибо! А где можно почитать что нельзя а что множно?
А теперь у меня таже ошибка(
Цитировать
g++ -static -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-ps
eudo-reloc -Wl,-subsystem,console -mthreads -Wl -o ..\..\..\bin\uic3.exe object_
script.uic3.Debug -L"c:\Qt\4.5.3\lib" -L"c:\Qt\4.5.3\lib" -lQt3Supportd -lQtSql
d -lQtXmld -lQtGuid -lQtNetworkd -lgdi32 -lcomdlg32 -loleaut32 -limm32 -lwinmm -
lwinspool -lmsimg32 -lodbc32 -lQtCored -lkernel32 -luser32 -lshell32 -luuid -lol
e32 -ladvapi32 -lws2_32
c:\Qt\4.5.3\lib\libQtGuid.a(qapplication.o)(.text+0x10c): In function `Z13initRe
sourcesv':
C:/Qt/4.5.3/src/gui/kernel/qapplication.cpp:111: undefined reference to `qInitRe
sources_qpaintengine_d3d()'
c:\Qt\4.5.3\lib\libQtGuid.a(qwidget_win.o)(.text+0x9350): In function `Z13_qt_d3
dEnginev':
C:/Qt/4.5.3/src/gui/kernel/qwidget_win.cpp:1938: undefined reference to `QDirect
3DPaintEngine::QDirect3DPaintEngine()'
c:\Qt\4.5.3\lib\libQtGuid.a(qwidget_win.o)(.text+0x9461): In function `Z18cleanu
p_d3d_enginev':
C:/Qt/4.5.3/src/gui/kernel/qwidget_win.cpp:1944: undefined reference to `QDirect
3DPaintEngine::cleanup()'
c:\Qt\4.5.3\lib\libQtGuid.a(qwidget_win.o)(.text+0x94b9): In function `ZNK7QWidg
et11paintEngineEv':
C:/Qt/4.5.3/src/gui/kernel/qwidget_win.cpp:2065: undefined reference to `QDirect
3DPaintEngine::hasDirect3DSupport()'
c:\Qt\4.5.3\lib\libQtGuid.a(qwidget_win.o)(.text+0x94ed):C:/Qt/4.5.3/src/gui/ker
nel/qwidget_win.cpp:2071: undefined reference to `QDirect3DPaintEngine::setFlush
OnEnd(bool)'
c:\Qt\4.5.3\lib\libQtGuid.a(qwidget_win.o)(.text+0x9502):C:/Qt/4.5.3/src/gui/ker
nel/qwidget_win.cpp:2073: undefined reference to `QDirect3DPaintEngine::setFlush
OnEnd(bool)'
c:\Qt\4.5.3\lib\libQtGuid.a(qwidget_win.o)(.text+0x95b9): In function `ZN14QWidg
etPrivate30createDefaultWindowSurface_sysEv':
C:/Qt/4.5.3/src/gui/kernel/qwidget_win.cpp:2107: undefined reference to `QDirect
3DPaintEngine::hasDirect3DSupport()'
c:\Qt\4.5.3\lib\libQtGuid.a(qwidget_win.o)(.text+0x95e5):C:/Qt/4.5.3/src/gui/ker
nel/qwidget_win.cpp:2109: undefined reference to `QD3DWindowSurface::QD3DWindowS
urface(QWidget*)'
collect2: ld returned 1 exit status
mingw32-make[2]: *** [..\..\..\bin\uic3.exe] Error 1
mingw32-make[2]: Leaving directory `C:/Qt/4.5.3/src/tools/uic3'
mingw32-make[1]: *** [debug] Error 2
mingw32-make[1]: Leaving directory `C:/Qt/4.5.3/src/tools/uic3'
mingw32-make: *** [debug-C__Qt_4_5_3_src_tools_uic3] Error 2
C:\Qt\4.5.3\src>
«
Последнее редактирование: Ноябрь 07, 2009, 00:23 от Noise
»
Записан
shadone
Гость
Re: Как в qt-sdk-win собрать проект со статическими библиотеками
«
Ответ #12 :
Ноябрь 07, 2009, 01:30 »
похоже вы пытаетесь собрать Qt с опцией configure -direct3d. Эта опция считается экспериментальной и не поддерживается официально. Говоря откровенно - она не работает и не будет, и будет исключена из Qt.
Записан
lit-uriy
Джедай : наставник для всех
Offline
Сообщений: 3880
Re: Как в qt-sdk-win собрать проект со статическими библиотеками
«
Ответ #13 :
Ноябрь 07, 2009, 04:04 »
Цитировать
А где можно почитать что нельзя а что множно?
Вобщем-то плагины Qt можно использовать, но есть ограничения и некоторые дополнительные телодвижения (
тык
)
Записан
Юра.
Noise
Гость
Re: Как в qt-sdk-win собрать проект со статическими библиотеками
«
Ответ #14 :
Ноябрь 07, 2009, 08:14 »
Возможно я что не так написал, но как его отключить?
Вот строка конигура которую я написал
configure -static
-no-direct3d
-qt-sql-sqlite -qt-sql-odbc -qt-libpng -qt-libjpeg
Цитировать
g++ -static -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-ps
eudo-reloc -Wl,-subsystem,console -mthreads -Wl -o ..\..\..\bin\uic3.exe object_
script.uic3.Debug -L"c:\Qt\4.5.3\lib" -L"c:\Qt\4.5.3\lib" -lQt3Supportd -lQtSql
d -lQtXmld -lQtGuid -lQtNetworkd -lgdi32 -lcomdlg32 -loleaut32 -limm32 -lwinmm -
lwinspool -lmsimg32 -lodbc32 -lQtCored -lkernel32 -luser32 -lshell32 -luuid -lol
e32 -ladvapi32 -lws2_32
c:\Qt\4.5.3\lib\libQtGuid.a(qapplication.o)(.text+0x10c): In function `Z13initRe
sourcesv':
C:/Qt/4.5.3/src/gui/kernel/qapplication.cpp:111: undefined reference to `qInitRe
sources_qpaintengine_d3d()'
c:\Qt\4.5.3\lib\libQtGuid.a(qwidget_win.o)(.text+0x9350): In function `Z13_qt_d3
dEnginev':
C:/Qt/4.5.3/src/gui/kernel/qwidget_win.cpp:1938: undefined reference to `QDirect
3DPaintEngine::QDirect3DPaintEngine()'
c:\Qt\4.5.3\lib\libQtGuid.a(qwidget_win.o)(.text+0x9461): In function `Z18cleanu
p_d3d_enginev':
C:/Qt/4.5.3/src/gui/kernel/qwidget_win.cpp:1944: undefined reference to `QDirect
3DPaintEngine::cleanup()'
c:\Qt\4.5.3\lib\libQtGuid.a(qwidget_win.o)(.text+0x94b9): In function `ZNK7QWidg
et11paintEngineEv':
C:/Qt/4.5.3/src/gui/kernel/qwidget_win.cpp:2065: undefined reference to `QDirect
3DPaintEngine::hasDirect3DSupport()'
c:\Qt\4.5.3\lib\libQtGuid.a(qwidget_win.o)(.text+0x94ed):C:/Qt/4.5.3/src/gui/ker
nel/qwidget_win.cpp:2071: undefined reference to `QDirect3DPaintEngine::setFlush
OnEnd(bool)'
c:\Qt\4.5.3\lib\libQtGuid.a(qwidget_win.o)(.text+0x9502):C:/Qt/4.5.3/src/gui/ker
nel/qwidget_win.cpp:2073: undefined reference to `QDirect3DPaintEngine::setFlush
OnEnd(bool)'
c:\Qt\4.5.3\lib\libQtGuid.a(qwidget_win.o)(.text+0x95b9): In function `ZN14QWidg
etPrivate30createDefaultWindowSurface_sysEv':
C:/Qt/4.5.3/src/gui/kernel/qwidget_win.cpp:2107: undefined reference to `QDirect
3DPaintEngine::hasDirect3DSupport()'
c:\Qt\4.5.3\lib\libQtGuid.a(qwidget_win.o)(.text+0x95e5):C:/Qt/4.5.3/src/gui/ker
nel/qwidget_win.cpp:2109: undefined reference to `QD3DWindowSurface::QD3DWindowS
urface(QWidget*)'
collect2: ld returned 1 exit status
mingw32-make[2]: *** [..\..\..\bin\uic3.exe] Error 1
mingw32-make[2]: Leaving directory `C:/Qt/4.5.3/src/tools/uic3'
mingw32-make[1]: *** [debug] Error 2
mingw32-make[1]: Leaving directory `C:/Qt/4.5.3/src/tools/uic3'
mingw32-make: *** [debug-C__Qt_4_5_3_src_tools_uic3] Error 2
Записан
Страниц: [
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 сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...