LINUX.ORG.RU

История изменений

Исправление 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.