Когда я dlsym()
какая-то библиотека, все глобальные символы из моего основного исполняемого файла могут быть доступны, если на них есть ссылки в коде библиотеки.
Как этого можно избежать? По крайней мере, нет флага для dlsym()
кажется, предлагает такую функцию.
Попробуйте сделать все символы в вашем основном исполняемом файле скрытыми по умолчанию. То есть компилировать с -fvisibility=hidden
и, возможно, больше опций, как описано здесь: Как применить опцию gcc -fvisibility к символам в статических библиотеках?
Это должно привести к тому, что ваш главный исполняемый файл не будет экспортирован, поэтому библиотека не сможет найти ничего.