Статические и динамические библиотеки в Linux

Любые обсуждения, не нарушающие правил форума.

Модератор: Модераторы

Статические и динамические библиотеки в Linux

Сообщение Attid » 25.07.2008 10:00:11

http://radist-elvin.blogspot.com/2008/07/linux.html

статья спримерами на Си, но в копилке пригодится
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Re: Статические и динамические библиотеки в Linux

Сообщение FedeX » 25.07.2008 11:18:29

* Именуйте динамические библиотеки следующим способом:
libNAME.so
Это традиция ;-)

Это, пожалуй не просто традиция, а скорее правило. Из-за этого я одно время провозился чуть не целый день пытаясь под Линухом создать *.so либу с моим графич. движком на FPC и откомпилировать программу его использующую. Не смотря на то, что я скопировал свою либу в /user/lib и обозвал её там как phloxlib.so а в хедере описал её функции как procedure name;stdcall;external 'phloxlib.so'; компилятор при компиляции выдавал "cannot find -lphloxlib". Я переименовал либу в libphloxlib.so и компилер успокоился, но зато всё-ещё не запускалась прога использующая эту либу. Тогда я создал ссылку на libphloxlib.so в той же /user/lib и обозвал эту ссылку phloxlib.so но и это не помогло, и только переименование ссылки просто в "phloxlib" помогло (это не смотря на то что в заголовках я по прежнему указывал external 'phloxlib.so'). В общем я так до конца и не понял почему это так, но так работает :?

Ещё была правда проблема с тем что прога загружалась и тут же падала отписавшись в лог что не смогла найти OpenGL которую она использует :)) Оказалось всё дело в том, что под виндой при загрузке длл-и автоматически выполняються все секции initialize во всех подключенных модулях (в том числе и gl,glu), а под Линуксом этого не происходит и заключённый там код надо выполнять самостоятельно...
Аватара пользователя
FedeX
постоялец
 
Сообщения: 422
Зарегистрирован: 27.03.2006 09:25:34
Откуда: украина, житомир

Re: Статические и динамические библиотеки в Linux

Сообщение Uniser » 28.07.2008 12:04:26

Интересно как можно "заключённый там (в initialization) код надо выполнять самостоятельно"?
Uniser
новенький
 
Сообщения: 46
Зарегистрирован: 13.05.2005 23:13:57
Откуда: Украина, Полтава

Re: Статические и динамические библиотеки в Linux

Сообщение FedeX » 28.07.2008 12:44:54

Открыть проблемный модуль, перейти в секцию initialization, скопировать там всё и вставить в свою функцию типа InitLibs и перед использованием библиотеки вызывать эту функцию )) Разве по другому можно?
Аватара пользователя
FedeX
постоялец
 
Сообщения: 422
Зарегистрирован: 27.03.2006 09:25:34
Откуда: украина, житомир


Вернуться в Потрепаться

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 20

Рейтинг@Mail.ru