При использовании gcc
для создания общей библиотеки можно ограничить видимость символов с помощью -fvisibility=hidden
.Я также только что узнал, что вы можете ограничить видимость с помощью опции version-script до ld
.
Теперь я хочу знать, возможно ли объединить их.Скажем, у меня есть программа со следующим:
void foobar() {}
void say_hello() {}
Затем у меня есть файл сценария версии с:
{
global:
foobar;
}
И я компилирую это с:
gcc -fvisibility=hidden -Wl,--version-script=<version-script> test.c -shared -o libtest.so
Когда я запускаю nm
в дальнейшем, я обнаруживаю, что никакие символы не экспортируются.В любом случае я могу установить видимость по умолчанию скрытой и использовать скрипт версии (или что-то еще) для экспорта символов?