Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как именно сделать статическую сборку.
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Общие вопросы
AD
Цитата(Litkevich Yuriy @ 5.3.2008, 13:49) *
когда работаешь в SVN в этом нет нужды ;)
но навсякий случай сделаю

Возможно, я туплю. Но как именно сделать статическую сборку. Если использую компилятор MS Visual Studio 8! Как заставить приложение включить в себя длл-ки типа qtcore4.dll? И вообще, как сделать, чтобы картинки отображались на любой машине?
Litkevich Yuriy
надо Qt специальным образом собрать, я вот сейчас думаю как держать на машине несколько сборок Qt, пожалуй надо отдельную тему придумать по этому поводу
AD
Цитата(Litkevich Yuriy @ 5.3.2008, 15:45) *
надо Qt специальным образом собрать, я вот сейчас думаю как держать на машине несколько сборок Qt, пожалуй надо отдельную тему придумать по этому поводу

Когда кто-нибудь узнает, выложите, пожалуйста, подробный ответ, как это сделать. ЗАранее спасибо!
AD
Кто знает, помогите, пожалуйста. Проблема довольно-таки непонятная, а сделать надо к завтрешнему дню!
Admin
вызови:
Цитата
configure -static [твои дополнительный параметры]
nmake

где, -static Create and use static Qt libraries.

Если Qt стоит, то нужно сначала запустить nmake confclean, а затем конфигурить и компилить...
AD
Цитата(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
А nmake сделал? :)
Litkevich Yuriy
ну, компилить свое пробывал?
Может он теперь их внутрь твоих бинарей засовывать станет?
Посмотри какой размер у них, вместо десятков кило, толжны мегабайты появится как я понимаю (для релиза, а для дебага и тогобольше).
AD
Цитата(ViGOur @ 5.3.2008, 18:31) *
А nmake сделал? :)

С слона-то я и не заметил. Сейчас делаю nmake! :lol:
AD
до сих пор компилируется! Это нормально?
Litkevich Yuriy
на моей машине Семпрон 2800-512Миб ОЗУ,MinGW собирал 2,5 часа

Может я уже опоздал, но мэйк надо сделать с ключем:
nmake sub-src
Litkevich Yuriy
как-то все плохо со статической сборкой, сегодня попробывал собрать, то что работало (были картинки svg), перестало работать (нет картинок svg) даже там где есть Qt :(
ViGOur
Ээээх, попробую объединить сборку phonon и статическую и описать что да как, как время появится... :)
AD
Цитата
Ээээх, попробую объединить сборку 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
AD, ты каким компиллером пользуешся?
я вот пост написал, почитай.
под висту с MinGW надо немного иначе делать
AD
Цитата
AD, ты каким компиллером пользуешся?
я вот пост написал, почитай.
под висту с MinGW надо немного иначе делать

Я использую Qt 4.3.2, которая имеет версию для Visual C++ 2005. Visual Integration 1.3.2 - интеграция вот такой версии!
Litkevich Yuriy
с Visual Studio надо как-то файлы *.manifest таскать со своим софтом, насколько я понял
AD
Цитата(Litkevich Yuriy @ 11.3.2008, 13:04) *
с Visual Studio надо как-то файлы *.manifest таскать со своим софтом, насколько я понял

:blink: зачем? Что они-то делают?
Litkevich Yuriy
непереведено еще, тут
в 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
Цитата(Litkevich Yuriy @ 11.3.2008, 16:14) *
непереведено еще, тут

Супер! Ссылка на нужный файл. Буду пробовать! :) Буду читать и разбираться! :) Спасибо.

P.S. Microsoft.VC80.CRT.manifest - такой файл нужен, действительно. :blink: Прошу прощения
AD
Проблема на счет неправильного запуска на разных компьютерах скорее всего решена. Оказывается, я не те msvcr80.dll, msvcp80.dll взял. С помощью утилиты depends обнаружил, что не та dll! Теперь проверю, скорее всего заработает!
Litkevich Yuriy
я для тестов VMWare использую (виртуальную машину), ну и тот с пособ с Тотал командером который я описывал несколько раньше тоже удобен, т.е. если ты и Qt и Visual Stidi'ю из переменной PATH уберешь, то считай на голой машине тестируешь, но ось конечно всегда одна и таже. А для нормальной работы в Stidi'и батничек создаешь, который нужное окружение для нее создает и нормально там работаешь.

скачать VMWare можно здесь, там зарегестрируйся, по минимуму, получишь ключи, когда будешь устанавливать, в ведешь ключи. Это добро бесплатное, по крайней мере если тебе тех поддержка не нужна.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.