История изменений
Исправление
pavlick,
(текущая версия)
:
Так и не загружай lib из plugin1/plugin2, линкуй через командную строку:
g++ ... -l_libname -o plugin1.so
В исполняемом файле
auto m = dlopen("./plugin1.so",RTLD_LAZY|RTLD_LOCAL);
В результате символы из lib_libname унаследуют видимость от plugin1.so, т.е. тоже будут RTLD_LOCAL в нашем процессе. Когда будешь загружать plugin2.so, то они не будут участвовать в переразмещениях для plugin2.so.
Исходная версия
pavlick,
:
Так и не загружай lib из plugin1/plugin2, линкуй через командную строку:
g++ ... -l_libname -o plugin1.so
В исполняемом файле
auto m = dlopen("./plugin.so",RTLD_LAZY|RTLD_LOCAL);
В результате символы из lib_libname унаследуют видимость от plugin1.so, т.е. тоже будут RTLD_LOCAL в нашем процессе. Когда будешь загружать plugin2.so, то они не будут участвовать в переразмещениях для plugin2.so.