powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Когда выйдет релиз FB3?
25 сообщений из 100, страница 3 из 4
Когда выйдет релиз FB3?
    #39186849
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fb user,

пример статической линковки кода SQLite3 я выкладывал
...
Рейтинг: 0 / 0
Когда выйдет релиз FB3?
    #39186853
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaratIskпри статической линковке код компилируется в исполняемый файл приложения и не требует наличия DLL
эээээ.... не так.
никакой код длл при статической линковке в exe не попадает, и длл все равно нужна. Основная разница между статической и динамической линковкой лишь в том, что при динамической длл грузится в любой момент работы, "по желанию", а при статической - загрузка длл производится при старте exe, и без этой длл приложение работать не будет.
Всякие интерфейсные виндовые длл линкуются (дельфями в т.ч.) статически.

p.s. дельфийские bpl - те же статически линкуемые длл. Всяческие драйверы к БД - ОДБЦ, БДЕ, дбЭкспресс - грузятся динамически, по мере коннекта к конкретному типу СУБД (не интерфейс, а сам драйвер).
...
Рейтинг: 0 / 0
Когда выйдет релиз FB3?
    #39186882
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvMaratIskпри статической линковке код компилируется в исполняемый файл приложения и не требует наличия DLL
эээээ.... не так.
никакой код длл при статической линковке в exe не попадает, и длл все равно нужна. Основная разница между статической и динамической линковкой лишь в том, что при динамической длл грузится в любой момент работы, "по желанию", а при статической - загрузка длл производится при старте exe, и без этой длл приложение работать не будет.
Всякие интерфейсные виндовые длл линкуются (дельфями в т.ч.) статически.

p.s. дельфийские bpl - те же статически линкуемые длл. Всяческие драйверы к БД - ОДБЦ, БДЕ, дбЭкспресс - грузятся динамически, по мере коннекта к конкретному типу СУБД (не интерфейс, а сам драйвер).

глупости
раннее и позднее связывание динамической библиотеки не имеет отношения к статической линковке
...
Рейтинг: 0 / 0
Когда выйдет релиз FB3?
    #39186898
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaratIskраннее и позднее связывание динамической библиотеки не имеет отношения к статической линковкеОб этом уже мало кто помнит\знает и для простоты используют стат\дин линковку с длл вместо раннего\позднего связывания (связывание и линковка - одно и тоже, кстати :))
...
Рейтинг: 0 / 0
Когда выйдет релиз FB3?
    #39186912
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaratIskне имеет отношения к статической линковке
согласен. но я может ересь скажу - компилятор не может взять стороннюю dll, и воткнуть ее код в результирующий exe-файл. Как ресурс - можно. В дельфи, если я правильно помню, статической линковки нет, есть только раннее и позднее связывание. Либо мы тупо компилируем код прямо в exe (если этот код есть в виде pas или dcu).
...
Рейтинг: 0 / 0
Когда выйдет релиз FB3?
    #39186937
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvMaratIskне имеет отношения к статической линковке
согласен. но я может ересь скажу - компилятор не может взять стороннюю dll, и воткнуть ее код в результирующий exe-файл. Как ресурс - можно. В дельфи, если я правильно помню, статической линковки нет, есть только раннее и позднее связывание. Либо мы тупо компилируем код прямо в exe (если этот код есть в виде pas или dcu).
С чего это ты взял?

И вправду ересь пишешь 2й раз - в этой тематике ты неправ.
...
Рейтинг: 0 / 0
Когда выйдет релиз FB3?
    #39187106
Фотография Tonal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvВ дельфи, если я правильно помню, статической линковки нет, есть только раннее и позднее связывание. Либо мы тупо компилируем код прямо в exe (если этот код есть в виде pas или dcu).
Схематично, можно объяснить примерно так:

Есть 2 стадии для получения бинарика:
1. Компиляция исходного кода в объектные файлы (в случае делфей - из .pas получается .dcu )
На этом этапе текст переводится в код. И создаётся справочник внешних (для файла) имён.

2. Сборка объектных файлов в выходной бинарик - линковка (в случае делфей - из кучи .dcu получается .exe | .dll | .bpl )
Весь код и данные собираются в единые секции а внешние имена заменяются на их адреса в секциях.
Кстати, именно поэтому получить имя функции и стек вызова во время исполнения - нетривиальная задача - имён просто не содержится в бинарике, если нет отладочной информации - спец. секции где сохраняется соответствие имён с адресами.

Для удобства кучку объектных файлов можно собрать в один - библиотеку (не помню как в делфях оно называется .dcl & .bpi ? ), и потом подключать её. Тогда линкер вытащит из неё только нужные для сборки объектники.

Когда собирается (линкуется) динамическая библиотека, линкер дополнительно создаёт для каждого экспортного имени переходник, и собирает их в библиотеку. Кроме того в этой библиотеке содержится имя динамической библиотеки которое при линковке запоминается в спец. секции бинарика.
Кстати, при сборки .exe -шника тоже можно указать какие-то миена как экспортные, создать подобную библиотечку и потом линковаться к ней в .dll -ках. (Тут я не знаю, есть ди у дельфей соответственный синтаксис и опции линкера).

И дополнительная стадия на этапе загрузки бинарика в память:
3. При загрузке в память системный загрузчик просматривает секцию бинарика, которая содержит имена нужных динамических библиотек, загружает каждую в память (если ещё не загружена) и подставляет реальные адреса экспортных из них символов вместо переходников.

Этот пункт можно проделать и полностью "вручную" (динамически) - загрузить бинарик в память, получить адреса его экспортных символов и далее их использовать.

Кстати, если понять что происходит на стадиях 2 и 3, то становится понятно что такое dll hell и на что нарвался __Avenger__.
В бинарике содержится только имя внешней .dll -ки, и ничего нет про версию. Поэтому если система ищет по имени, и грузит/берёт первую подходящую.
Если она оказалась не более старая/новая и с другим составом экспортов - происходит ошибка загрузки.
Кстати, гораздо хуже будет если состав экспортов не поменялся, а вот например порядок и/или состав параметров вызова поменялся.
Тут ошибка загрузки не произойдёт но при вызове таких функций случится что попало. Хорошо ещё если сразу сегфолт. :)

П. С. Ежели кому интересно, обсуждать можно в ЖЖ . :)
...
Рейтинг: 0 / 0
Когда выйдет релиз FB3?
    #39187469
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tonal,

исчерпывающе, но не вполне )))
статическая линковка однозначно предполагает компиляцию исходного кода в приложение. преимущества этого очевидны - отсутствие необходимости таскать с программой кучу библиотек в виде DLL файлов с соотвествующим избавлением от DLL hell (проблемой загрузки разных версий библиотечных файлов). минусы тоже есть - необходимо наличие исходного кода или уже готовых объектных файлов, невозможность использовать новые версии библиотеки.
для статики, как правило, используются библиотеки написанные на С и/или С++. но и тут есть подводные камни - в Delphi можно использовать объектные файлы полученные компилятором от Borland BCC32. FPC распознает только объектные файлы написанные на С.
в обоих случаях (имею ввиду статику и динамику) требуются интерфейсные PAS файлы (аналог заголовочных файлов С/С++), транслирующие экспортируемые библиотекой функции. для FPC есть утилита H2PAS.
...
Рейтинг: 0 / 0
Когда выйдет релиз FB3?
    #39187812
Фотография Tonal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaratIsk,

.DCU - это тоже объектные файлы. :)
У продуктов Борланда свой формат объектников, через это Дельфя понимает только объектники полученные от борландёвых же компиляторов.
Так же как и Билдер понимает .dcu-шки от Делфей, но не поймёт что делать с объектниками от FPC или M$ .
А "статические библиотеки" - это не что иное как некоторое количество объектных файлов собранных в один для удобства.
Загляни в директорию bin - там есть утилита для работы со статическими библиотеками. Можно создать либку, долбавить/удалить/заменить объектник в ней.

Таким образом, ехе-шка/dll-ка/bpl-ка получается статическим связыванием (линковкой) объектных файлов (возможно из состава библиотеки).
Кстати, bpl-ка с точки зрения системы ничем не отличается от dll-ки

Динамическое связывание происходит в 2 приёма:
1. ехе-шка/dll-ка статически связывается (линкуется) с библиотекой переходников.
Тут можно заметить, что борландовский линкер умеет автоматом создавать такие библиотеки, если ему подсунуть dll-ку вместо lib-ки.

2. При загрузке в память загрузчик операционки находит требуемые dll-ки, загружает их в память, находит нужные имена или ординалы и подставляет их адреса вместо переходников.
...
Рейтинг: 0 / 0
Когда выйдет релиз FB3?
    #39187821
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tonal,

неверное утверждение
А "статические библиотеки" - это не что иное как некоторое количество объектных файлов собранных в один для удобства.

их иногда десятки и собрать в один (особенно, из с-шных исходников) весьма трудоемко
и еще раз повторю - статика всегда предполагает компиляцию функциональности в результирующий исполняемый файл
...
Рейтинг: 0 / 0
Когда выйдет релиз FB3?
    #39187916
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
немного по теме
...
Рейтинг: 0 / 0
Когда выйдет релиз FB3?
    #39187918
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Когда выйдет релиз FB3?
    #39188910
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargl,

давай я тебе дам голую dll, а ты ее код вкомпилируешь в exe. Вкомпилировать в exe всякие pas, dcu, obj и проч - и ёж сможет.
...
Рейтинг: 0 / 0
Когда выйдет релиз FB3?
    #39188959
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvSiemargl,

давай я тебе дам голую dll, а ты ее код вкомпилируешь в exe. Вкомпилировать в exe всякие pas, dcu, obj и проч - и ёж сможет.
Давай я тебе скажу как это сделать.

DLL - Это просто кусок кода функций (но с пофикшенными релокейшнами). Если есть map-файл, грузи его в память и вызывай по смещению.
https://en.wikipedia.org/wiki/Relocation_(computing)

Например с такой функцией справляются всякие упаковщики и защитники программ.
А вот часть dll влинковать в общем случае не выйдет.
...
Рейтинг: 0 / 0
Когда выйдет релиз FB3?
    #39188963
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Слинковать можно например с помощью скриптов гнусного линкера ld. Т.е в память тебе его система загрузит стандартной функцией.

Но вот связывание придется сделать ручками.
...
Рейтинг: 0 / 0
Когда выйдет релиз FB3?
    #39188987
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvSiemargl,

давай я тебе дам голую dll, а ты ее код вкомпилируешь в exe. Вкомпилировать в exe всякие pas, dcu, obj и проч - и ёж сможет.

совсем невнимательно читаешь (((

повторяю - для статической линковки нужны либо исходники, либо уже скомпилированные объектные файлы.
ДЛЛ - для динамического подключения, не считая хакерских штучек типа помещения в ресурсы и использования в памяти

кстати, по поводу ежа ))) даже готовые OBJ файлы могут не линковаться в delphi-exe статически из-за разности форматов - COFF и ELF
...
Рейтинг: 0 / 0
Когда выйдет релиз FB3?
    #39188990
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglЕсли есть map-файл
в дистрибутиве firebird map-файлов нет.

я бы предложил завязать. А то конкретный вопрос про 18902793 превратился в вопросы терминологии, и прочего (включая LD).
Можно fbclient.dll статически слинковать с дельфевым exe? Теоретически - да, практически - нет.
Можно fbclient.dll подключать ранней или поздней загрузкой? Да, сколько угодно.
...
Рейтинг: 0 / 0
Когда выйдет релиз FB3?
    #39189088
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvкомпилятор не может взять стороннюю dll, и воткнуть ее код в результирующий exe-файл

это верно

kdvВ дельфи, если я правильно помню, статической линковки нет

а это - нет. Просто влинковываюся внутрь, разумеется, не DLL, а OBJ ( и по слухам vc++ x64 lib )

например OBJ-и того же SQLite
...
Рейтинг: 0 / 0
Когда выйдет релиз FB3?
    #39189096
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ariochа это - нет. Просто влинковываюся внутрь, разумеется, не DLL, а OBJ
статическая линковка для меня настолько естественна, что про dcu/obj я и не говорю. имел в виду "линковку" dll в exe, без obj, map, вообще без ничего.
...
Рейтинг: 0 / 0
Когда выйдет релиз FB3?
    #39189141
fb user
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Смыслы я знал давно, а термины немного попутал.
...
Рейтинг: 0 / 0
Когда выйдет релиз FB3?
    #39189282
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чисто теоретически предположу, что для FB developers было б не очень сложно выкладывать fbclient также в формате набора obj-файлов м файлом-заголовком. Если бы это было действительно кому-то реально нужно.
...
Рейтинг: 0 / 0
Когда выйдет релиз FB3?
    #39190104
Го-стхи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AriochЧисто теоретически предположу, что для FB developers было б не очень сложно выкладывать fbclient также в формате набора obj-файлов м файлом-заголовком. Если бы это было действительно кому-то реально нужно.
А толку? Если кто линкует FB с прогой на си, у него и так есть компилятор, и собрать либу не составит труда. А с другим языком хрен эти obj-и подружишь. Я как-то тоже возмечтал о самодостаточной проге с имплантированным fbclient. Собрал его, перегнал obj в формат Борланда - и столкнулся с проблемой неразрешимых зависимостей от этой кучи obj, не считая более мистических ошибок. Забил.
...
Рейтинг: 0 / 0
Когда выйдет релиз FB3?
    #39213221
Ritter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Релиз надо делать сегодня - уж очень символичный день 12 апреля!
...
Рейтинг: 0 / 0
Когда выйдет релиз FB3?
    #39213587
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ritter,

> очень символичный день 12 апреля!

в последний раз что ли? ;-)
...
Рейтинг: 0 / 0
Когда выйдет релиз FB3?
    #39213591
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

предлагаешь релиз FB3 перенести на следующий год? Нет уж.
...
Рейтинг: 0 / 0
25 сообщений из 100, страница 3 из 4
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Когда выйдет релиз FB3?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]