Только начал вникать в динамическую подгрузку функции и тут вот такое... Ткните носом плз.
Прога состоит из главной части(main) и плагина(libsmb.so), который должен динимически подгружаться.
Вот с плагином проблемы. В плагине использую либу libsmbclient.
Собираю я его так:
g++ -shared -W1,-soname,libsmb.so.0 -o libsmb.so.0.0.1 smb.oСобирается без проблем, но (вот тут я ещё плохо разобрался) как я понимаю, в полученной библиотеке существуют только ссылки на функции из библиотеки libsmbclient, но не сами функции, т.к. при линковании главной проги сыпится множество ошибок о том, что символ не резолвиться, от этого легко избавиться если при линковании главной проги указать дополнительно -lsmbclient.
Вот у меня и возник вопрос: можно ли так собрать мой плагин libsmb.so что бы в нём были не только ссылки на функции libsmbclient, но и сами функции? Т.е. что бы при сборке главной проги не приходилось использовать -lsmbclient?Заранее благодарен.
ЗЫ
Кто-нибудь знет _менее_ документированную либу чем libsmbclient?
> Только начал вникать в динамическую подгрузку функции и тут вот такое...
>Ткните носом плз.
> Прога состоит из главной части(main) и плагина(libsmb.so),
>который должен динимически подгружаться.
>
> Вот с плагином проблемы. В плагине использую либу libsmbclient.
> Собираю я его так:
> g++ -shared -W1,-soname,libsmb.so.0 -o libsmb.so.0.0.1 smb.o
>
> Собирается без проблем, но (вот тут я ещё плохо разобрался) как
>я понимаю, в полученной библиотеке существуют только ссылки на функции из
>библиотеки libsmbclient, но не сами функции, т.к. при линковании главной
>проги сыпится множество ошибок о том, что символ не резолвиться, от этого
>легко избавиться если при линковании главной проги указать дополнительно
>-lsmbclient.
> Вот у меня и возник вопрос: можно ли так собрать мой
>плагин libsmb.so что бы в нём были не только ссылки на
>функции libsmbclient, но и сами функции? Т.е. что бы при сборке
>главной проги не приходилось использовать -lsmbclient?Варианты:
1) Добавить -lsmbclient в ключи сборки рекомого плагина. libsmbclient.so
тогда будет автоматически грузиться при загрузке libsmb.so, при этом в
главной программе ссылаться на libsmbclient.so не требуется. Может
не получиться на некоторых антикварных ОС с кривыми линкерами.
2) Добыть *.o, из которых собирается libsmbclient.so, и залинковать
их в свою библиотеку. Жульничество, но работать будет.>ЗЫ
> Кто-нибудь знет _менее_ документированную либу чем libsmbclient?ACE. Документация как бы есть, но на наименее (IMHO) интересные
участки.