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