Самый распространенный способ сделать видимыми только определенные символы в общем объекте в Linux - это передать -fvisibility=hidden
в gcc, а затем украсить символы, которые вы хотите видеть, с помощью __attribute__((visibility("default")))
.
Если вы ищете решение для экспорта в виде файла, вам может понадобиться опция компоновщика --retain-symbols-file=FILENAME
, которая может сделать то, что вы ищете.
Я не знаю простого способа экспорта функции с именем, отличным от ее имени, но, вероятно, это возможно с помощью редактора эльфов. Редактировать: Я думаю, что вы можете использовать скрипт компоновщика (посмотрите страницу руководства для ld), чтобы присвоить значения символам в шаге ссылки, что дает альтернативное имя для данной функции. Обратите внимание, я никогда не пробовал это.
Для просмотра видимых символов в общем объекте вы можете использовать команду readelf
. readelf -Ds
если я правильно помню.