Можно ли сделать символы из моего исполняемого файла недоступными для динамически открытых библиотек?

Когда я dlsym() какая-то библиотека, все глобальные символы из моего основного исполняемого файла могут быть доступны, если на них есть ссылки в коде библиотеки.

Как этого можно избежать? По крайней мере, нет флага для dlsym() кажется, предлагает такую ​​функцию.

2

Решение

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

Это должно привести к тому, что ваш главный исполняемый файл не будет экспортирован, поэтому библиотека не сможет найти ничего.

3

Другие решения


По вопросам рекламы [email protected]