Для VC я могу написать файл DEF и использовать директиву "NONAME", чтобы оставить только порядковый номер в таблице экспорта dll.
Как я могу сделать то же самое с общей библиотекой gcc и ELF?
Или, есть ли что-то эквивалентное в ELF-общей библиотеке, например порядковый номер в DL-формате формата PE? Если нет, как я могу скрыть экспортированное имя символа в общей библиотеке?
======================================
ОБНОВЛЕНИЕ: Дополнительные описания:
В Windows вы можете экспортировать функцию только поместить целочисленный идентификатор (порядковый номер) с пустым именем.
Чтобы показать это, нормальный макет для таблицы экспорта dll выглядит следующим образом: http://home.hiwaay.net/~georgech/WhitePapers/Exporting/HowTo22.gif.
"NONAME" выглядит следующим образом: http://home.hiwaay.net/~georgech/WhitePapers/Exporting/HowTo23.gif.
Обратите внимание, что имя функции - "N/A" во втором изображении. Вот полное объяснение этого: hxxp://home.hiwaay.net/~georgech/WhitePapers/Exporting/Exp.htm.
======================================
ОБНОВЛЕНИЕ: Большое спасибо за каждого, кто делает мне совет. Наконец, я решил сохранить статическую библиотеку на платформах linux/posix. Но извлеките небольшую "специальную часть" (которая использует некоторые функции, не подходящие для статического lib, например: TLS Slot и т.д.) В обычную разделяемую библиотеку. Поскольку небольшая обычная разделяемая библиотека выполняет только несколько вещей, и эти работы полностью нечувствительны, поэтому нет необходимости скрывать/скрывать свои API-интерфейсы.
Я думаю, что это самый простой способ решить мою проблему: -D