Здравствуйте, гость ( Вход | Регистрация )
BRE | Дата 17.3.2009, 9:28 |
А если я возьму статическую библиотеку скомпиленную в linux и попытаюсь её прилинковать к программе в windows, будет какая-нибудь разница? Предположим, что код в ней портабельный. Никакой привязки к API OS или сторонним библиотекам. Форматы разные, думаю ничего не получиться. В .a, как ты и писал выше, лежат .o, а они, по идее, уже под собираемую платформу заточены. Хотя, если привязки никакой нет и форматы .o mingw и gcc одинаковые, все может быть. |
|
SABROG | Дата 17.3.2009, 9:24 |
А для меня так не разрешенным остался такой вопрос. .a библиотеки отличаются чем-нибудь от linux и windows версий? В linux .а статическая библиотека. Для динамической .a не создается, линкер сразу .so пользуется. А если я возьму статическую библиотеку скомпиленную в linux и попытаюсь её прилинковать к программе в windows, будет какая-нибудь разница? Предположим, что код в ней портабельный. Никакой привязки к API OS или сторонним библиотекам. |
|
BRE | Дата 17.3.2009, 9:15 |
А для меня так не разрешенным остался такой вопрос. .a библиотеки отличаются чем-нибудь от linux и windows версий? В linux .а статическая библиотека. Для динамической .a не создается, линкер сразу .so пользуется. |
|
SABROG | Дата 17.3.2009, 9:13 |
А для меня так не разрешенным остался такой вопрос. .a библиотеки отличаются чем-нибудь от linux и windows версий? | |
BRE | Дата 17.3.2009, 8:17 |
т.е. в случае сборки Qt с разделяемыми библиотеками, при компиляции моей программы эти a'шки линкером присоеденяются к объектникам моей программы и потом получается exe'шник? Да. Если я не ошибаюсь, dll можно вообще убрать, а линкер программу все равно соберет. dll нужны будут только при исполнении программы. |
|
Litkevich Yuriy | Дата 17.3.2009, 2:23 |
В .pro файле можно прописать TEMPLATE = lib и собрать ... это я знаю, я про разные варианты *.a не знал. |
|
SABROG | Дата 17.3.2009, 0:52 |
Из объектников (.o) получаются .a, ну это не для случая моей программы, а для случая самой Qt. Уменя только *.o создаются в указанных мною каталогах.В .pro файле можно прописать TEMPLATE = lib и собрать какой-нибудь класс, или группу классов. Если он завершен, т.е. ты не будешь его менять также как Qt, то можешь тупо линковать к своей программе, главное, чтобы хедер был, где описан интерфейс/определение класса. Ведь часто нет смысла пересобирать готовый модуль каждый раз вместе с программой. Это и на скорости компиляции скажется. |
|
Litkevich Yuriy | Дата 17.3.2009, 0:47 |
Из объектников (.o) получаются .a, ну это не для случая моей программы, а для случая самой Qt. Уменя только *.o создаются в указанных мною каталогах. |
|
SABROG | Дата 17.3.2009, 0:32 |
вот .а содержит код-переходник для вызова функций из dll. т.е. в случае сборки Qt с разделяемыми библиотеками, при компиляции моей программы эти a'шки линкером присоеденяются к объектникам моей программы и потом получается exe'шник?Из объектников (.o) получаются .a, это тоже самое, что и .lib. Линкер использует a./.lib файлы, чтобы сгенерить исполнимый файл. Оттуда он берет адреса функций, переменные, кто что куда экспортирует/импортирует. На этапе линковки .dll файлы не нужны. Если мне память не изменяет, то ld в некоторых случаях может вообще без .a файлов обходится, если есть .dll. |
|
Litkevich Yuriy | Дата 17.3.2009, 0:14 |
вот .а содержит код-переходник для вызова функций из dll. т.е. в случае сборки Qt с разделяемыми библиотеками, при компиляции моей программы эти a'шки линкером присоеденяются к объектникам моей программы и потом получается exe'шник? |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 24.4.2024, 0:56 |