Версия для печати темы
Форум на CrossPlatform.RU _ Qt Общие вопросы _ Как именно сделать статическую сборку.
Автор: AD22 5.3.2008, 15:43
Цитата(Litkevich Yuriy @ 5.3.2008, 13:49)
когда работаешь в SVN в этом нет нужды
но навсякий случай сделаю
Возможно, я туплю. Но как именно сделать статическую сборку. Если использую компилятор MS Visual Studio 8! Как заставить приложение включить в себя длл-ки типа qtcore4.dll? И вообще, как сделать, чтобы картинки отображались на любой машине?
Автор: Litkevich Yuriy 5.3.2008, 15:45
надо Qt специальным образом собрать, я вот сейчас думаю как держать на машине несколько сборок Qt, пожалуй надо отдельную тему придумать по этому поводу
Автор: AD22 5.3.2008, 15:47
Цитата(Litkevich Yuriy @ 5.3.2008, 15:45)
надо Qt специальным образом собрать, я вот сейчас думаю как держать на машине несколько сборок Qt, пожалуй надо отдельную тему придумать по этому поводу
Когда кто-нибудь узнает, выложите, пожалуйста, подробный ответ, как это сделать. ЗАранее спасибо!
Автор: AD22 5.3.2008, 16:48
Кто знает, помогите, пожалуйста. Проблема довольно-таки непонятная, а сделать надо к завтрешнему дню!
Автор: Admin 5.3.2008, 16:59
вызови:
Цитата
configure -static [твои дополнительный параметры]
nmake
где, -static Create and use static Qt libraries.
Если Qt стоит, то нужно сначала запустить nmake confclean, а затем конфигурить и компилить...
Автор: AD22 5.3.2008, 18:21
Цитата(Admin @ 5.3.2008, 16:59)
вызови:
Цитата
configure -static [твои дополнительный параметры]
nmake
где, -static Create and use static Qt libraries.
Если Qt стоит, то нужно сначала запустить nmake confclean, а затем конфигурить и компилить...
Я сделал
nmake confclean
затем
configure -static
Он создал prl файлы, lib and dll файлы так и остались файлами от 1.10.2007. Что подскажите?
Автор: ViGOur 5.3.2008, 18:31
А nmake сделал?
Автор: Litkevich Yuriy 5.3.2008, 18:32
ну, компилить свое пробывал?
Может он теперь их внутрь твоих бинарей засовывать станет?
Посмотри какой размер у них, вместо десятков кило, толжны мегабайты появится как я понимаю (для релиза, а для дебага и тогобольше).
Автор: AD22 5.3.2008, 18:42
Цитата(ViGOur @ 5.3.2008, 18:31)
А nmake сделал?
С слона-то я и не заметил. Сейчас делаю nmake!
Автор: AD22 5.3.2008, 19:40
до сих пор компилируется! Это нормально?
Автор: Litkevich Yuriy 5.3.2008, 19:44
на моей машине Семпрон 2800-512Миб ОЗУ,MinGW собирал 2,5 часа
Может я уже опоздал, но мэйк надо сделать с ключем:
nmake sub-src
Автор: Litkevich Yuriy 7.3.2008, 8:37
как-то все плохо со статической сборкой, сегодня попробывал собрать, то что работало (были картинки svg), перестало работать (нет картинок svg) даже там где есть Qt
Автор: ViGOur 7.3.2008, 8:46
Ээээх, попробую объединить сборку phonon и статическую и описать что да как, как время появится...
Автор: AD 11.3.2008, 12:53
Цитата
Ээээх, попробую объединить сборку phonon и статическую и описать что да как, как время появится...
думаю, что проблема именно из-за того, что не удалась статическая сборка, поэтому кладу сюда:
1) Сборка удалась не полностью, такие lib, как QtGuid4.lib, QtCore4.lib и пр. не пересобрались
2) Забросил эту сборку, собрал динамически: c помощью total comander и кнопки F3 узнал какие нужны dll, скопировал их в одно место вместе с exe-файлом. Однако:
на 7 из 10 компьютерах программа запустилась, на 2 выдала ошибку, что необходимо переинсталлировать приложение, а на компе, на котором стояла Windows Vista запускалась при втором запуске. Поясняю, запускал с флешки, поэтому, когда вынимал и вставлял флешку, программа запускалась с второго раза, с первого, выдавала странную ошибку. На остальных компах - Windows XP был.
В чем ошибка? Можно ли при динамической сборке Qt, таская необходимые dll с собой, запускать программу на любом компьютере? Как выправить эти ошибки?
Автор: Litkevich Yuriy 11.3.2008, 12:56
AD, ты каким компиллером пользуешся?
я вот http://www.forum.crossplatform.ru/index.php?showtopic=485&view=findpost&p=2282 написал, почитай.
под висту с MinGW надо немного иначе делать
Автор: AD 11.3.2008, 13:00
Цитата
AD, ты каким компиллером пользуешся?
я вот http://www.forum.crossplatform.ru/index.php?showtopic=485&view=findpost&p=2282 написал, почитай.
под висту с MinGW надо немного иначе делать
Я использую Qt 4.3.2, которая имеет версию для Visual C++ 2005. Visual Integration 1.3.2 - интеграция вот такой версии!
Автор: Litkevich Yuriy 11.3.2008, 13:04
с Visual Studio надо как-то файлы *.manifest таскать со своим софтом, насколько я понял
Автор: AD 11.3.2008, 15:59
Цитата(Litkevich Yuriy @ 11.3.2008, 13:04)
с Visual Studio надо как-то файлы *.manifest таскать со своим софтом, насколько я понял
зачем? Что они-то делают?
Автор: Litkevich Yuriy 11.3.2008, 16:14
непереведено еще, http://crossplatform.ru/documentation/qtdoc4.3/deployment-windows.php#visual-studio-2005
в SVN клиенте написаном на Qt4 под названием QSVN есть такой файл qsvn.exe.manifest в корневом каталоге программы, вот его содержимое:
<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
<dependency>
<dependentAssembly>
<assemblyIdentity type='win32' name='Microsoft.VC80.CRT' version='8.0.50608.0' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
</dependentAssembly>
</dependency>
</assembly>
сам каталог содержит такие файлы:
ChangeLog
intl3_svn.dll
libapr.dll
libapriconv.dll
libaprutil.dll
libdb44.dll
libeay32.dll
QSvn.exe
qsvn.exe.manifest
QtCore4.dll
QtGui4.dll
README
ssleay32.dll
svnqt-qt4.dll
Автор: AD 11.3.2008, 16:31
Цитата(Litkevich Yuriy @ 11.3.2008, 16:14)
непереведено еще, http://crossplatform.ru/documentation/qtdoc4.3/deployment-windows.php#visual-studio-2005
Супер! Ссылка на нужный файл. Буду пробовать!
Буду читать и разбираться!
Спасибо.
P.S. Microsoft.VC80.CRT.manifest - такой файл нужен, действительно.
Прошу прощения
Автор: AD 11.3.2008, 17:03
Проблема на счет неправильного запуска на разных компьютерах скорее всего решена. Оказывается, я не те msvcr80.dll, msvcp80.dll взял. С помощью утилиты depends обнаружил, что не та dll! Теперь проверю, скорее всего заработает!
Автор: Litkevich Yuriy 11.3.2008, 20:17
я для тестов VMWare использую (виртуальную машину), ну и тот с пособ с Тотал командером который я описывал несколько раньше тоже удобен, т.е. если ты и Qt и Visual Stidi'ю из переменной PATH уберешь, то считай на голой машине тестируешь, но ось конечно всегда одна и таже. А для нормальной работы в Stidi'и батничек создаешь, который нужное окружение для нее создает и нормально там работаешь.
скачать VMWare можно http://www.vmware.com/download/server/drivers_tools.html, там зарегестрируйся, по минимуму, получишь ключи, когда будешь устанавливать, в ведешь ключи. Это добро бесплатное, по крайней мере если тебе тех поддержка не нужна.
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)