Название: Статическая и динамическая сборка библиотек. Отправлено: Aleksey_Zh от Ноябрь 10, 2009, 15:38 В Qt я пока новичок.
1. Подскажите, в чем разница в статической и динамической сборки библиотек. Грубо говоря есть у меня некоторая dll. Путем несложных махинаций я ее превращая в файл с расширением .a Добавляю в проект как LIBS+=имя библиотеки. Это какая сборка? 2. В чем разница между статическим и динамическим подключением библиотек. И как осуществляется одно и другое? P.S. Windows/mingw Название: Re: Статическая и динамическая сборка библиотек. Отправлено: Igors от Ноябрь 10, 2009, 16:10 В Qt я пока новичок. Qt здесь ни при чем. Насколько я знаю (опыт в Линукс 1 месяц) .а - статическая библиотека, .so - динамическая. В общем случае (для любой платформы)1. Подскажите, в чем разница в статической и динамической сборки библиотек. Грубо говоря есть у меня некоторая dll. Путем несложных махинаций я ее превращая в файл с расширением .a Добавляю в проект как LIBS+=имя библиотеки. Это какая сборка? 2. В чем разница между статическим и динамическим подключением библиотек. И как осуществляется одно и другое? - статическая вливается в исполняемый файл, результат тот же как если все ф-ции библиотеки написаны в программе - динамическая вызывает функции других модулей. Исполняемый файл меньше но не запустится если нужные модули не найдутся Динамические библиотеки могут быть замаскированы под статические (вероятно это результат упоминаемых Вами махинаций). Например в том же Вындоуз (MS 2009) я подключаю к проекту - kernel32.lib - mycalc.lib В обоих есть ф-ции которые программа вызывает. Но в mycalc.lib - это сами ф-ции (статически) а в kernel32.lib - это вызовы нужных ф-ций из модуля kernel (динамчески). Никто не мешает быть статической либе просто "оберткой" для динамческой. Ну и все это конечно как я себе это представляю и как достаточно для моих задач. А вообще в этом вопросе не силен и хотелось бы услышать мнения знатоков :) Название: Re: Статическая и динамическая сборка библиотек. Отправлено: Aleksey_Zh от Ноябрь 10, 2009, 16:22 Спасибо Igors! Сейчас гуглил по нету и пришел такому же мнению насчет статики(что это *.а). Про динамические библиотеки - думал что это только dll. Подскажите, если знаете, в чем отличается динамическая от статической линковки. И как к динамически собранной куте прилинковать статическую библиотеку.
Название: Re: Статическая и динамическая сборка библиотек. Отправлено: Авварон от Ноябрь 10, 2009, 16:31 при статике как уже сказано весь код встраивается в твое приложение
при динамике в бинарнике только вызовы к dll когда ты собираешь приложение, ты указывашь путь к библиотеке (-Lpath). Если по этому пути лежит .dll то линкуется к динамически ней. Если там есть .а, то идет статик линк. Проверено на вин\мак. Возможно есть способ указать напрямую тип линковки (может быть даже через CONFIG+=static в своем приложении) Название: Re: Статическая и динамическая сборка библиотек. Отправлено: Igors от Ноябрь 10, 2009, 16:36 Спасибо Igors! Сейчас гуглил по нету и пришел такому же мнению насчет статики(что это *.а). Про динамические библиотеки - думал что это только dll. Подскажите, если знаете, в чем отличается динамическая от статической линковки. И как к динамически собранной куте прилинковать статическую библиотеку. Динамическим модулем может быть файл с любым именем/расширением. В 1 проекте может быть сколько угодно статических и динамических библиотек - это не вопрос. Но каждая ф-ция должна быть определена только в 1 библиотеке - иначе не слинкуется. То есть библиотеки не должны "пересекаться".Ф-ция статической либы линкуется точно так же как и ф-ция написанная в программе. Для ф-ции вызываемой динамически компилятор строит специальные дополнения в коде - на каждой платформе по-разному и рассказывать довольно долго, но смысл один - обеспечить вызов ф-ции из др. модуля. Название: Re: Статическая и динамическая сборка библиотек. Отправлено: Aleksey_Zh от Ноябрь 10, 2009, 22:28 Авварон, CONFIG+=static - это куда именно прописывается? И как система поймет, что это относится к конкретной библиотеке?
Название: Re: Статическая и динамическая сборка библиотек. Отправлено: Авварон от Ноябрь 11, 2009, 01:12 это пишется в .pro-файл. Никак. Как я уже отмечал выше, она старается линковаться динамически, если динамики нет, пробует статику. Если и ее нет, ругается. Мб этот конфиг помняет порядок - заставит сначала пробовать статику. Но если и сработает, то для всех библиотек проекта
Название: Re: Статическая и динамическая сборка библиотек. Отправлено: lit-uriy от Ноябрь 11, 2009, 04:25 Aleksey_Zh, а речь идёт про виндовоз?
Название: Re: Статическая и динамическая сборка библиотек. Отправлено: Aleksey_Zh от Ноябрь 11, 2009, 08:40 Да, конечно про Windows+mingw. Сейчас поправлю заголовок.
|