crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> MinGW32, Статическая и динамическая сборка, *.dll и *.a, Требуется ликбез
Litkevich Yuriy
  опции профиля:
сообщение 16.3.2009, 23:33
Сообщение #1


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Пришел к выводу полного непонимания типов сборок и назначения файлов *.dll и *.a и как вообще вся эта кухня устроена.
частный случай - виндовоз и MinGW32, Qt4

--== I ==--
вот собираю я Qt с разделяемыми библиотеками (configure -shared ....)
создаются dll'ки, это мне ВРОДЕ понятно.
1) При компиляции программы мне нужны только заголовочники для этих dll'ок, сами dll'ки не нужны.
2) При запуске программы она обращается к ОСьке и говорить нужна такая-то функция из такой-то dll'ки. ОСька ищет dll'ку и, если находит, то загружает ее в память, и как-то там говорит моей программе по каким адресам эта функция находиться

--== II ==--
вот собираю я Qt статически (configure -static ....)
создаются a'шки, это мне тоже ВРОДЕ понятно.
1) При компиляции программы мне нужны уже не только заголовочники для этих a'шек, но и сами a'шки, чтобы линкер соеденил в один exe'шник объектники (*.o) моей программы и Qt'ишные a'шки.
2) При запуске программы она оказывается самодостаточной и просит у ОСьки только стандартные ОСькины функции.

Если это все так, то у меня вопрос, а зачем при сборке с разделяемыми библиотеками в каталоге %QTDIR%\lib создается море a'шек?
И почему нельзя один Qt'шный корневой каталог использовать для разных типов сборок, ведь в %QTDIR%\lib уже есть и то и другое?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Litkevich Yuriy
  опции профиля:
сообщение 17.3.2009, 0:47
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(SABROG @ 17.3.2009, 3:32) *
Из объектников (.o) получаются .a,
ну это не для случая моей программы, а для случая самой Qt. Уменя только *.o создаются в указанных мною каталогах.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 17.3.2009, 0:52
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


Цитата(Litkevich Yuriy @ 17.3.2009, 0:47) *
Цитата(SABROG @ 17.3.2009, 3:32) *
Из объектников (.o) получаются .a,
ну это не для случая моей программы, а для случая самой Qt. Уменя только *.o создаются в указанных мною каталогах.

В .pro файле можно прописать TEMPLATE = lib и собрать какой-нибудь класс, или группу классов. Если он завершен, т.е. ты не будешь его менять также как Qt, то можешь тупо линковать к своей программе, главное, чтобы хедер был, где описан интерфейс/определение класса. Ведь часто нет смысла пересобирать готовый модуль каждый раз вместе с программой. Это и на скорости компиляции скажется.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 22.12.2024, 10:30