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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Статическая и Динамическая - Две хозяйки на одной кухне.  (Прочитано 11108 раз)
PavelDart
Гость
« : Ноябрь 05, 2009, 21:03 »

Почитал wiki - образовался вопрос, ответ на него пока не нашёл.
Вот имеется у меня сейчас сконфигурированная на релиз и дебаг версия qt4. Получается она динамическая, так как -static параметр я не указывал.
Мне нужна ещё и статическая сборка.
Вот, к примеру, есть у меня проект, пока без про-файла. Каким способом будет происходить выбор сборки? Заменой путей? Как эти две сборки будут уживаться друг с другом?

Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #1 : Ноябрь 05, 2009, 21:29 »

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

Сообщений: 3880


Просмотр профиля WWW
« Ответ #2 : Ноябрь 05, 2009, 21:33 »

Вариант для IDE - переключение настроек проекта

Вариант без IDE - переключение окружения
Записан

Юра.
PavelDart
Гость
« Ответ #3 : Ноябрь 05, 2009, 22:34 »

Получается вот что,
был бы Creator или Integrator то проблемы с перенастройкой не было бы.
В отсутствие их переключение производится заменой путей.
Вроде бы ничего сложного.
Надо проверить.
Записан
PavelDart
Гость
« Ответ #4 : Ноябрь 06, 2009, 00:31 »

Собралась статическая сборка.
Не меняя переменных окружения (соответственно п.о. выставил перед установкой статической сборки)
[PavelDart] C:\Qt\projects\first$ echo %path%
С:\MinGW\bin;C:\MinGW\mingw32\bin;
E:\Qt\4.3.4\bin; - адрес стат. сборки
O:\oraclexe\app\oracle\product\10.2.0\server\bin;
O:\app\PavelDart\product\11.1.0\db_1\bin;
C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\MySQL\Server\bin;
c:\MySQL\Server\include;
скомпилировал helloworld - компилируется debug and release версией. Образуются три макфайла, две папки. Приложение без dll работать отказывается.
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #5 : Ноябрь 06, 2009, 00:36 »

>>Приложение без dll работать отказывается.
без которой?
Записан

Юра.
PavelDart
Гость
« Ответ #6 : Ноябрь 06, 2009, 08:43 »

>>Приложение без dll работать отказывается.
без которой?

Когда имелась только динамическая сборка требовалось 3 dll:
mingwm10.dll
QtCore4.dll
QtGui4.dll

Сейчас программа не запускается только без mingwm10.dll
Вот эту строчку из Makefile.Release извлёк:
-DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN



Записан
Joss
Гость
« Ответ #7 : Ноябрь 06, 2009, 12:38 »

Вы плохо изучили wiki, там есть описание сборки без mingwm10.dll

Добавить в файле <QTDIR>\mkspecs\win32-g++\qmake.conf
в строчку QMAKE_LFLAGS = -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc ключ -static
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #8 : Ноябрь 06, 2009, 18:30 »

PavelDart, Может оказаться полезным - тык
Записан

Юра.
PavelDart
Гость
« Ответ #9 : Ноябрь 06, 2009, 19:38 »

Вы плохо изучили wiki, там есть описание сборки без mingwm10.dll

Добавить в файле <QTDIR>\mkspecs\win32-g++\qmake.conf
в строчку QMAKE_LFLAGS = -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc ключ -static

Нашёл эти строки:
QMAKE_LFLAGS_EXCEPTIONS_ON = -mthreads -Wl
QMAKE_LFLAGS_EXCEPTIONS_OFF =

Не повлияет?

PavelDart, Может оказаться полезным - тык

Лишним не будет.
---
Сейчас опробовал:
Добавить в файле <QTDIR>\mkspecs\win32-g++\qmake.conf
в строчку QMAKE_LFLAGS = -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc ключ -static
[/quote]

пробовал в 2 вариантах:
QMAKE_LFLAGS      = -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc-static
и
QMAKE_LFLAGS      = -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc,-static

Всё то же - ищет mingwm10.dll
« Последнее редактирование: Ноябрь 06, 2009, 19:52 от PavelDart » Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #10 : Ноябрь 06, 2009, 20:44 »

ты по моей ссылке второе сообщение почитай (самый первый ключ, который у поминает человек)
Записан

Юра.
PavelDart
Гость
« Ответ #11 : Ноябрь 06, 2009, 21:47 »

ты по моей ссылке второе сообщение почитай (самый первый ключ, который у поминает человек)

Да, обратил внимание. Надеялся без пересборки обойдётся.  Улыбающийся На сколько помню, у меня вот это было:
configure -static -release -qt-zlib -qt-gif -qt-libpng -qt-libmng -qt-libjpeg
 
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #12 : Ноябрь 06, 2009, 22:25 »

>>На сколько помню, у меня вот это было
Точно можно посмотреть в файле configure.cache
Записан

Юра.
PavelDart
Гость
« Ответ #13 : Ноябрь 06, 2009, 23:00 »

Собирал qt под виндой собственно для реализации приложения, связанного с Mysql, но в данную конфигурацию поддержку не включил. Ещё понадобится доступ к Oracle 10g. По этому, буду пересобирать qt, но есть подводные камни.
Вот пример:
-qt-sql-<driver>

В PATH пути к папкам bin имеются, по этому, наверное прописывать их ключём -I не надо. Или надо?
Так как надо подключить два драйвера, то, полагаю, подстрока параметров configure.exe будет выглядеть так:
-qt-sql-QMYSQL  -qt-sql-QOCI
Записан
PavelDart
Гость
« Ответ #14 : Ноябрь 09, 2009, 22:15 »

Уважаемые, подскажите, пожалуйста, какие файлы должны быть в директориях, чтобы поддежка mysql и oracle была?
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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