Вопрос по линковке плагинов. Стоит ли их линковать с "основной библиотекой", которую они используют? При условии, что их загружает сама эта библиотека. Собираю новую версию sqlite3 и наблюдаю: undefined symbol: Tcl_BackgroundError (/usr/lib/tcl/libtclsqlite3.so.0) undefined symbol: Tcl_GetStringResult (/usr/lib/tcl/libtclsqlite3.so.0) undefined symbol: Tcl_GetCharLength (/usr/lib/tcl/libtclsqlite3.so.0) undefined symbol: Tcl_ListObjGetElements (/usr/lib/tcl/libtclsqlite3.so.0) undefined symbol: Tcl_GetDoubleFromObj (/usr/lib/tcl/libtclsqlite3.so.0) undefined symbol: Tcl_SetIntObj (/usr/lib/tcl/libtclsqlite3.so.0) При этом в пакете нет бинарной зависимости на libtcl: $ rpm -qpR sqlite3-tcl-3.3.6-alt1.athlon.rpm |grep tcl $ В случае с перлом бинарная зависимость на libperl.so.5.8 появляется вследствие хака в /usr/lib/rpm/find-requires: $ grep libperl /usr/lib/rpm/* /usr/lib/rpm/find-requires:libperl_so= /usr/lib/rpm/find-requires: libperl) /usr/lib/rpm/find-requires: nolibperl) /usr/lib/rpm/find-requires: if [ -n "$FIND_LIBPERL" -a -z "$libperl_so" -a -z "${f##*/usr/lib/perl?/*/auto/*.so}" ]; then /usr/lib/rpm/find-requires: libperl_so=`perl -MConfig -e 'print "$Config{libperl}\n"'` /usr/lib/rpm/find-requires: printf %s\\n "$libperl_so$braces$suffix" $ Конкретизируя, вопрос вот в чем: предположим, что между запуском приложения и загрузкой плагина "основная библиотека" обновилась. Будет ли dlopen() загружать ещё одну (новую!) копию основной библиотеки? Ясно, что это как минимум не желательно (а как максимум -- фатально). Или же dlopen() "понимает", что библиотека уже загружена и второй раз подгружать её не надо?