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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Как в qt-sdk-win собрать проект со статическими библиотеками  (Прочитано 17903 раз)
Кутенок
Гость
« : Сентябрь 04, 2009, 14:57 »

Сильно не пинайте. Я прочитал несколько тем и статью в Вики, но все равно не понятно  Грустный  Ткните пальцем, где надо поставить галочку или что-то написать.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Сентябрь 04, 2009, 16:34 »

В вики все хорошо написано. Что именно не понятно?
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Кутенок
Гость
« Ответ #2 : Сентябрь 04, 2009, 16:58 »

Цитировать
Ключиком -static поставленая задача выполняется не полностью
мне не понятно, где этот ключик надо прописать
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #3 : Сентябрь 04, 2009, 17:43 »

В корневике Qt есть файлик configure. Вот его и нужно запускать, передав ему параметр -static.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Joss
Гость
« Ответ #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.
Записан
Кутенок
Гость
« Ответ #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
Гость
« Ответ #6 : Сентябрь 07, 2009, 16:18 »

Я же Вам написал - надо сделать все по шагам.
Буквально - надо собрать статическую версию Qt из исходников! Только тогда будет возможность собирать на ее основе релизные приложения, не зависящие от библиотек.

На ее основе, имейте ввиду! Т.е. после сборки у Вас будет две библиотеки - обычная, которую Вы скачали ранее, и собраная Вами - при компиляции приложения в релиз указываете именно вторую Qt, собранную Вами по вышеуказанным шагам. Для дебажных целей оставляйте стандартную библиотеку.
Записан
Кутенок
Гость
« Ответ #7 : Сентябрь 08, 2009, 10:20 »

Большое спасибо, Joss Теперь мне все понятно Я не понимал, что обязательно надо собрать Qt из исходников.
Записан
Кутенок
Гость
« Ответ #8 : Сентябрь 08, 2009, 10:36 »

Цитата: Wiki
Прежде чем собрать приложение статически мы должны собрать статически Qt.
Эту фразу из вики для таких как я лучше выделить жирным шрифтом
Записан
Noise
Гость
« Ответ #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 Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #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
Гость
« Ответ #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
Гость
« Ответ #12 : Ноябрь 07, 2009, 01:30 »

похоже вы пытаетесь собрать Qt с опцией configure -direct3d. Эта опция считается экспериментальной и не поддерживается официально. Говоря откровенно - она не работает и не будет, и будет исключена из Qt.
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #13 : Ноябрь 07, 2009, 04:04 »

Цитировать
А где можно почитать что нельзя а что множно?
Вобщем-то плагины Qt можно использовать, но есть ограничения и некоторые дополнительные телодвижения (тык)
Записан

Юра.
Noise
Гость
« Ответ #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   Вверх
  Печать  
 
Перейти в:  


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