скрипт версии и скрытая видимость

При использовании 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 на этом, я обнаруживаю, что символы не экспортируются. Есть ли способ установить видимость по умолчанию на скрытую и использовать скрипт версии (или что-то еще) для экспорта символов?

9
задан Cris Luengo 5 October 2018 в 17:32
поделиться