LINUX.ORG.RU

Анатомия динамических библиотек Linux

 ,


0

0

Динамически компонуемые совместно используемые библиотеки чрезвычайно важны в GNU/Linux, при помощи них приложения получают доступ к внешним функциям. Библиотеки подключаются на стадии выполнения, а общее потребление памяти сокращается, так как используется только необходимая на данный момент функциональность. В данной статье рассказывается, как создавать и использовать динамические библиотеки, описываются различные утилиты для работы с ними, а также объясняются внутренние принципы работы динамических библиотек.

>>> Подробности

★★★

Проверено: Shaman007 ()

На удивление вменяемая статья. o.o

twosev ★★
()

c/windows/system32/*.dll ))

Deleted
()

мало

было бы интересно если бы рассмотрели multilib ( /lib/i686/cmov,sse2,nosegneg )
и работу утилиты prelink

Sylvia ★★★★★
()

Ура! Опять OOO ИБМ EE/A генерит массу лулзов!

"Dynamically linked shared libraries are an important aspect of GNU/Linux®." (с)

"Динамически компонуемые совместно используемые библиотеки чрезвычайно важны в GNU/Linux®." (с)

ЧРЕЗВЫЧАЙНО доставляющий перевод. На башорг!

Есть в русском языке устоявшиеся термины "разделяемые библиотеки" и "динамически подключаемые библиотеки", но в OOO ИБМ EE/A об этом, видать, не знают.

Bioreactor ★★★★★
()
Ответ на: комментарий от Bioreactor

> Ура! Опять OOO ИБМ EE/A генерит массу лулзов!

> "Dynamically linked shared libraries are an important aspect of GNU/Linux®." (с)

> "Динамически компонуемые совместно используемые библиотеки чрезвычайно важны в GNU/Linux®." (с)

> ЧРЕЗВЫЧАЙНО доставляющий перевод. На башорг!

> Есть в русском языке устоявшиеся термины "разделяемые библиотеки" и "динамически подключаемые библиотеки", но в OOO ИБМ EE/A об этом, видать, не знают.

Устоялись они, возможно, в мозгах у Вас и ближайших друзей, но термины тем не менее, скажем так, не вполне пригодные.

Во-первых, "разделяемые" -- это перевод "shared" при разговоре о куче денег, которую делят компаньоны, а не о ресурсах, или о файлах, которые режутся на куски, чего в данном случае не происходит. Ресурсы "общие" или "совместно используемые" -- это термины не только "устоявшиеся", но и одобренные лингвистами корпораций из сферы ИТ и внесённые в интерфейсы всех локализованных ОС.

Во-вторых, "подключение" предполагает наличие канала связи, по которому происходит подключение. А это (динамическая загрузка с подключением) не единственный способ использования библиотек такого рода в никсах. Просто указанный Вами термин был придуман ДЛЯ НЕМНОГО ДРУГОГО ОБЪЕКТА -- библиотек, которые КОМПОНОВАТЬСЯ не могут даже в момент загрузки программы -- к ним возможно было только ПОДКЛЮЧЕНИЕ. Это было давно, насколько я помню, в многозадачных системах на старых мейнфреймах. Вроде бы термин DLL изначально такого же происхождения (Dynamically Loadable Library), но в какой-то момент микрософт изменил трактовку, возможно, после введения механизма компоновки при загрузке.

Так что не упорствуйте.

А перевод хорош и профессионален, ЧТО ДЛЯ ИБМ НЕХАРАКТЕРНО. Огорчают только "утилиты" (служебные программы) и идиотский микрософтизм/англицизм "XXX-файл" (грубая ошибка, поскольку XXX не есть член предложения, а выполняет функцию имени собственного и потому должно стоять ПОСЛЕ носителя грамматической формы "файл"). Впрочем, общей положительной картины они не портят.

Orlusha ★★★★
()
Ответ на: комментарий от Orlusha

> Во-первых, "разделяемые" -- это перевод "shared" при разговоре о куче денег, которую делят компаньоны, а не о ресурсах, или о файлах,

"Кто выучил англо-русский словарь, тот выучил англо-русский язык (The Runglish language)." (с) Афоризм

"shared adjective owned, divided, felt or experienced by more than one person" (c) Cambridge dictionary

http://en.wikipedia.org/wiki/Shared_library#Shared_libraries

http://ru.wikipedia.org/wiki/%D0%91%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5...

Ню-ню...

Bioreactor ★★★★★
()
Ответ на: комментарий от Orlusha

> Так что не упорствуйте.

Я не упорствую. Таки уже Бабруйский английский круче, чем на Бrайтон-Бич.

http://en.wikipedia.org/wiki/Dynamic-link_library

> Вроде бы термин DLL изначально такого же происхождения (Dynamically Loadable Library)

DLL == Dynamic Link_Library

Остальное - отсебятина. Ну может у Вас уже Dynamically Loadable Library. А у нас таки Dynamic Link_Library .

Bioreactor ★★★★★
()

грамар наци на лоре стали переходить все границы, в каждой новости ><
за статью спасибо, почитаем.

stave ★★★★★
()

[coder@glukensoft ~]$ /lib/ld-linux.so.2 /usr/lib/libX11.so.6
Ошибка сегментирования


Странно, у меня как в статье не получается.

d_a ★★★★★
()

Несколько лет назад подобная статья (вроде даже на ЛОР) была. Очень полезная. Если тут придираются к лулзам в плане русского языка - то там исправление самой статьи шло в комментах.

skwish ★★
()

Статья не содержит и половины необходимой информации. Какие функции можно использовать при инициализации динамической библиотеки? Как загрузка динамических библиотек соотносится с многопоточностью? Как загружать динамические библиотеки в чужой процесс? Каков формат таблицы импорта и как ее подменять на ходу? Почему в статье не упомянуто про идиотский -fpic, из-за которого динамические библиотеки под линуксом работают медленнее, чем под виндой и имеют кучу проблем с использованием в них статических библиотек, собранных без этого флага? Про dll'ки под windows можно найти кучу весьма детальной информации, а под linux - шиш.

halyavin
()

да уж... кретинская аннотация :) говорит о том что запостиший новость ее откуда то скопировал а автор толком не знает в чем прелесть библиотек :)

umanets
()

хм, мне почему-то такое название темы больше офтопик напоминает:

вот так взяли, и "shared object" обозвали "динамической библиотекой", ещё б DLL написали, не православно.

G
()

Статейко явно не тянет не хедлайн. Можно много рассуждать о пользе или вреде DLL но так и не прийти к результату, но по жизни от них больше проблем чем пользы :)

robot12 ★★★★★
()
Ответ на: комментарий от halyavin

>про идиотский -fpic, из-за которого динамические библиотеки...Про dll'ки под windows можно найти кучу весьма детальной информации, а под linux - шиш.

хех. ну так и напиши же человече. а вантуз нам неинтересен. совсем

black7
()

Очередной нуб осилил shared libs! Похвально, но на новость как-то увы и ах! Может мне начать постить, чего я осилил со вчера на сегодня?

void_ptr ★★★★
()
Ответ на: комментарий от halyavin

>Каков формат таблицы импорта и как ее подменять на ходу?

Подменять на ходу? А зачем? Загрузите нужную либу, а интерфейс скройте в обертке. Лишние сотня байт экономии нужны только для марсоходов :)

void_ptr ★★★★
()
Ответ на: комментарий от feanor

>> было уже?

> Не, просто обычно IBM_dW пишет Linux®.


Просто IBM_dW дегенерат и пишет: Linux®, UNIX®, Java™.

Jayrome ★★★★★
()
Ответ на: комментарий от void_ptr

>Подменять на ходу? А зачем? Загрузите нужную либу, а интерфейс скройте в обертке. Лишние сотня байт экономии нужны только для марсоходов :)

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

halyavin
()
Ответ на: комментарий от Bioreactor

>ЧРЕЗВЫЧАЙНО доставляющий перевод. На башорг!
Bioreactor - иди в школу дятел.

srgaz
()
Ответ на: комментарий от halyavin

Странно, а я с помощью ctypes на питоне динамически переподключал сишные либы не зная формата таблицы импорта. И работает без черной магии и вызова колдуна )))

void_ptr ★★★★
()
Ответ на: комментарий от halyavin

> автоматически переводить (с помощью всплывающих подсказок) приложения на другой язык

o_0

казалось бы, при чём тут shared object ?

dk2
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.