LINUX.ORG.RU

Как спрятать функции в статической библиотеке?


0

1

Чтобы сделать функцию невидимой снаружи объектного файла, нужно поставить перед ней static. А если мне необходима эта функция в другом объектном файле библиотеки, но не нужно, чтобы она была видна снаружи?

Я нашёл два решения:

- писать всю библиотеку в одном файле;

- использовать #include.

В обоих случаях получится один объектный файл и при любом изменении он будет перекомпилироваться целиком.

Есть рациональные решения?



Последнее исправление: Pew-pew (всего исправлений: 1)

Ответ на: комментарий от drake

Типа того. Нужно чтобы функции, используемые для внутренних целей библиотеки, не мешались в пространстве имён пользователя.

Pew-pew
() автор топика
Ответ на: комментарий от pacify

Гуглить «dll» - последнее, что пришло бы мне в голову. Спасибочки.

Pew-pew
() автор топика

Насколько я понимаю, можно слинковать либу в один объектник (ld -r). Тогда останется как-то сделать локальными все глобальные символы, кроме нужных.

const86 ★★★★★
()

добавь к прототипам «белых» ф-ий __attribute__((visibility(«default»))), а компилируй с -fvisibility=hidden. для so'шки работает, для статической - не уверен.

nanoolinux ★★★★
()
Ответ на: комментарий от nanoolinux

да и вообще, тов. дреппер советует так всегда делать.

nanoolinux ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.