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