Russian Qt Forum
Ноябрь 06, 2024, 03:17
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Установка, сборка, отладка, тестирование
>
4.2.3 статически со стат. MSVCRT из сырцов с нуля
Страниц: [
1
]
2
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: 4.2.3 статически со стат. MSVCRT из сырцов с нуля (Прочитано 21765 раз)
Tertium Organum
Гость
4.2.3 статически со стат. MSVCRT из сырцов с нуля
«
:
Апрель 05, 2007, 15:17 »
Надеюсь, это не выглядит как спам. Просто только недавно я делал топик по 4.2.0. Но там было несколько криво. Не ручаюсь, что здесь все наилучшим способом делается, но это работает, и на это ушло вобщем два дня.
Итак:
0.
слили с
того-что-нельзя-называть-дабы-не-упоминать-о-неупоминаемом-имя-которого-мы-не-произносим-вслух
qt-win-commercial-src-4.2.3.zip
1.
скопировали исходники в c:\qt\4.2.3
2.
Создали файл .qt-license в Documents and Settings\<user name>\
3.
Вписали в него:
# Qt license file (Created by the binary installer)
LicenseID="XXXXXXXXX"
Licensee="<user name>"
LicenseKeyExt=XXXXXXX-XXXXXXX-XXX-XXXXXXX-XXXXXX-XXXXXX-XXXX
генератор найти не составит труда
4.
Находим C:\Qt\4.2.3\mkspecs\win32-msvc2005\qmake.conf. Правим в нем, чтобы линковать к кутешным либам MSVCRT статически:
QMAKE_CFLAGS_RELEASE = -O2 -MD
QMAKE_CFLAGS_DEBUG = -Zi -MDd
на
QMAKE_CFLAGS_RELEASE = -O2 -MT
QMAKE_CFLAGS_DEBUG = -Zi -MTd
Находим строку типа «CONFIG += qt warn_on release...» и убираем в ее конце директивы embed_manifest_dll и embed_manifest_exe
5.
C:\Qt\4.2.3\projects.pro комментарим строку:
# SUBDIRS += demos examples
6.
Запускаем Пуск –> Microsoft Visual Studio 2005 ->Visual Studio Tools ->Visual Studio 2005 Command Prompt и пишем в ней:
cd c:\qt\4.2.3
configure -debug-and-release -static -qt-libjpeg -qt-zlib -qt-gif -no-qt3support
ждем, пока не напишет что теперь можно пускать nmake. Однако не nmake пускаем пока.
7.
Заходим в папку C:\Qt\4.2.3\src\, открываем в студии src.sln. Выделяем все проекты с шифтом, заходим в
Properties -> C/C++ -> Output files -> Program database file name
Задаем строку: $(TargetDir)$(TargetName).pdb
Теперь, если нужны будут pdb файлы (чтобы можно было в отладке свободно ходить), надо будет в студии сделать нужным
либам Rebuild Selected. По месту создадутся одноименные либам pdbшники, а не как по дефолту vc8.
Целиком собирать в студии я не стал, проще было воспользоваться nmake.
8.
Компилим moc, rcc, uic. Без них сборка nmake'ом невозможна. В c:\qt\4.2.3\bin должны появиться соотв. экзешники.
Студию не закрываем.
9.
Если нужно не все, а только сама QT и тулзы, делаем простой батничек в c:\qt\4.2.3\, например, mybuild.bat :
nmake sub-src
nmake sub-tools
10.
В консоли мокрософта пишем:
mybuild.bat или просто nmake
Ждем окончания компиляции
nmake clean
11.
Возвращаемся в студию, выделяем и билдим нужные нам библиотеки.
Я компилил qtmain, QtGui, QtCore, QtNetwork, QtOpenGL, QtSQL, QtXML.
Потом делаем в c:\qt\4.2.3\:
del /f /s /q *.obj
del /f /s /q *.ilk
del /f /s /q *.pch
12.
Процесс завершен. Теперь надо ставить qt-vsintegration-1.2.2.exe, скопированный с
того-что-нельзя-называть-дабы-не-упоминать-о-неупоминаемом-имя-которого-мы-не-произносим-вслух
.
Папка с QT в результате занимает у меня 516 метров.
Записан
pastor
Administrator
Джедай : наставник для всех
Offline
Сообщений: 2901
Re: 4.2.3 статически со стат. MSVCRT из сырцов с нуля
«
Ответ #1 :
Апрель 05, 2007, 18:59 »
Дополню вышесказанное статьей:
Building static Qt on Windows
Записан
Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
aliks-os
Гость
4.2.3 статически со стат. MSVCRT из сырцов с нуля
«
Ответ #2 :
Апрель 06, 2007, 12:38 »
Скиньте мне пожалуйста на мыло адрес
того-что-нельзя-называть-дабы-не-упоминать-о-неупоминаемом-имя-которого-мы-не-произносим-вслух.
добавлено спустя 2 часа 27 минут:
А можно ли поставить и юзать все это на WinXP без установки VS.
А то у меня нет его, а при сборке использую компилятор от Борланда и выскакивают куча ошибок
Записан
noosooth
Гость
4.2.3 статически со стат. MSVCRT из сырцов с нуля
«
Ответ #3 :
Апрель 06, 2007, 17:06 »
Чтобы не плодить топики напишу тут.
Я тут недавно переписывал драйвер для одной железяки под виндой.
Отладочную инфу от драйвера наблюдал в DebugView, а она до кучи перехватывала и OutputDebugString от win32 приложений.
Смешно конечно. Отлаживал драйвер, а увидел что выводит в debugger Qt'овое приложение.
Короче увидел я там, что моё поделие, собранное при помощи компилятора от VS2005 со static release Qt 4.2.3 + статически слинкованный runtime, сыпет при запуске и иногда в процессе работы qWarning'ами типа:
Цитировать
[2252] QObject::moveToThread: Current thread (01522428) is not the object's thread (00DA44A0).
[2252] Cannot move to target thread (00DA44A0)
Странно думаю, ведь сразу после запуска поток в программе у меня один.
Полез собрал release /examples/mainwindows/mdi
Та же фигня при запуске.
На работе приложения оно вроде никак не сказывается.
Спрашивается что в данном случае не нравится QObject::moveToThread?
И кого он собственно move?
P.S. Что-то похожее проскакивало
тут
, но как-то невнятно.
Записан
ReAmimaFan
Гость
4.2.3 статически со стат. MSVCRT из сырцов с нуля
«
Ответ #4 :
Апрель 10, 2007, 15:16 »
Сделал все как было написано в первом посте и при попытке откомпилировать проек получаю
cannot open input file 'c:\Qt\4.2.2\lib\QtGui4.lib'
Что я сделал не правильно подскажите плз.
З.Ы. поделитесь кто нибудь ключиком к 4.2.3
Записан
Tertium Organum
Гость
4.2.3 статически со стат. MSVCRT из сырцов с нуля
«
Ответ #5 :
Апрель 12, 2007, 09:02 »
блин, QtGui4.lib - это статлиба для линковки dll!
надо грузить QtGui.lib или QtGuid.lib для отладочного проекта
проект, создаваемый интегратором хочет динамическую куте по умолчанию
ключик как и на все остальные продукты троллтека, здесь писать не дают, на личку кину
Записан
ReAnimaFan
Гость
4.2.3 статически со стат. MSVCRT из сырцов с нуля
«
Ответ #6 :
Апрель 12, 2007, 12:30 »
Цитата: "Tertium Organum"
надо грузить QtGui.lib или QtGuid.lib для отладочного проекта
проект, создаваемый интегратором хочет динамическую куте по умолчанию
Не подскажете как сделать так чтобы он хотел статическую куте? Буду очень благодарен.
Записан
Tertium Organum
Гость
4.2.3 статически со стат. MSVCRT из сырцов с нуля
«
Ответ #7 :
Апрель 14, 2007, 00:15 »
просто прописать в настройках линкера -> инпут вместо QtGui4.lib
QtGui.lib
Записан
WW
Гость
Re: 4.2.3 статически со стат. MSVCRT из сырцов с нуля
«
Ответ #8 :
Май 28, 2007, 12:50 »
Цитата: "Tertium Organum"
4.
Находим C:\Qt\4.2.3\mkspecs\win32-msvc2005\qmake.conf. Правим в нем, чтобы линковать к кутешным либам MSVCRT статически:
QMAKE_CFLAGS_RELEASE = -O2 -MD
QMAKE_CFLAGS_DEBUG = -Zi -MDd
на
QMAKE_CFLAGS_RELEASE = -O2 -MT
QMAKE_CFLAGS_DEBUG = -Zi -MTd
Находим строку типа «CONFIG += qt warn_on release...» и убираем в ее конце директивы embed_manifest_dll и embed_manifest_exe
А есть решение под MinGW. Чтобы "все свое ношу с собой". А то завязка на mingw32.dll остается...
Записан
pastor
Administrator
Джедай : наставник для всех
Offline
Сообщений: 2901
Re: 4.2.3 статически со стат. MSVCRT из сырцов с нуля
«
Ответ #9 :
Май 28, 2007, 13:52 »
Цитата: "WW"
А есть решение под MinGW. Чтобы "все свое ношу с собой". А то завязка на mingw32.dll остается...
Читаем по ссылке во вотром посте этой темы
Записан
Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
WW
Гость
4.2.3 статически со стат. MSVCRT из сырцов с нуля
«
Ответ #10 :
Май 28, 2007, 14:20 »
Пасиб! Слона-то и не приметил.
Записан
Djavdet
Гость
Re: 4.2.3 статически со стат. MSVCRT из сырцов с нуля
«
Ответ #11 :
Сентябрь 26, 2007, 11:28 »
для 4.3.1 версии QT схема покатит?
Записан
pastor
Administrator
Джедай : наставник для всех
Offline
Сообщений: 2901
Re: 4.2.3 статически со стат. MSVCRT из сырцов с нуля
«
Ответ #12 :
Сентябрь 26, 2007, 14:44 »
Цитата: Djavdet от Сентябрь 26, 2007, 11:28
для 4.3.1 версии QT схема покатит?
Да, должна
Записан
Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
3epo4
Гость
Re: 4.2.3 статически со стат. MSVCRT из сырцов с нуля
«
Ответ #13 :
Сентябрь 27, 2007, 11:42 »
Сделал все по инструкции, в итогде такие ошибки линковки:
Цитировать
1>------ Build started: Project: screenshot, Configuration: Release Win32 ------
1>MOC screenshot.h
1>Compiling...
1>moc_screenshot.cpp
1>screenshot.cpp
1>main.cpp
1>Generating Code...
1>Linking...
1>MSVCRT.lib(MSVCR80.dll) : error LNK2005: _longjmp already defined in LIBCMT.lib(longjmp.obj)
1>MSVCRT.lib(MSVCR80.dll) : error LNK2005: _malloc already defined in LIBCMT.lib(malloc.obj)
1>MSVCRT.lib(MSVCR80.dll) : error LNK2005: _fprintf already defined in LIBCMT.lib(fprintf.obj)
1>MSVCRT.lib(MSVCR80.dll) : error LNK2005: ___iob_func already defined in LIBCMT.lib(_file.obj)
1>MSVCRT.lib(MSVCR80.dll) : error LNK2005: _free already defined in LIBCMT.lib(free.obj)
1>MSVCRT.lib(ti_inst.obj) : error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) already defined in LIBCMT.lib(typinfo.obj)
1>MSVCRT.lib(ti_inst.obj) : error LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info const &)" (??4type_info@@AAEAAV0@ABV0@@Z) already defined in LIBCMT.lib(typinfo.obj)
1>LINK : warning LNK4098: defaultlib 'MSVCRT' conflicts with use of other libs; use /NODEFAULTLIB:library
1>release\screenshot.exe : fatal error LNK1169: one or more multiply defined symbols found
1>screenshot - 8 error(s), 1 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Записан
pastor
Administrator
Джедай : наставник для всех
Offline
Сообщений: 2901
Re: 4.2.3 статически со стат. MSVCRT из сырцов с нуля
«
Ответ #14 :
Сентябрь 27, 2007, 12:57 »
Цитата: 3epo4 от Сентябрь 27, 2007, 11:42
Сделал все по инструкции, в итогде такие ошибки линковки
Очисть проект, перегенери мейк-файл или файл студийного проекта и попробуй собрать заново
Записан
Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Страниц: [
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 сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...