управление видимостью символов библиотеки

Модератор: Модераторы разделов

IMB
Сообщения: 2470
ОС: Debian

управление видимостью символов библиотеки

Сообщение IMB »

Доброго дня!
Имеется следующий набор
- libA.a , blob поставляемый производителя SoC
- libB.so, blob поставляемый разработчиком сервиса, зависит от libA.a
- lib.C.so, разрабатываемая библиотека реализующая в том числе взаимодействие с сервисом через libB.so
- app, разрабатываемое приложение связанное с libC.so
Сейчас для libC.so приделывается ограничение отображения символов и все внутренние символы не нужные app скрываются через -Wl,--exclude-libs=ALL, но линковка app при этих условиях непроходит так как libB.so жалуется что не видит символы из libA.a.
Как можно libC.so сказать отображать символы из libA.so?
Спасибо.
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 16307
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: управление видимостью символов библиотеки

Сообщение Bizdelnick »

Вроде бы, самое простое и очевидное — вместо --exclude-libs=ALL перечислять список архивов за исключением libA.a.
Пишите правильно:
в консоли
вкупе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

IMB
Сообщения: 2470
ОС: Debian

Re: управление видимостью символов библиотеки

Сообщение IMB »

Да, это можно попробовать, а как быть если требуется обеспечить видимости только части символов?
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 16307
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: управление видимостью символов библиотеки

Сообщение Bizdelnick »

См. про --dynamic-list и --version-script.
Вот тут об этом рассказывается, например: http://anadoxin.org/blog/control-over-symbol-exports-in-gcc.html
Пишите правильно:
в консоли
вкупе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

IMB
Сообщения: 2470
ОС: Debian

Re: управление видимостью символов библиотеки

Сообщение IMB »

Опираясь на http://anadoxin.org/blog/control-over-symbol-exports-in-gcc.html и https://stackoverflow.com/questions/8432431/ld-script-for-symbol-hidding-in-c создал version-file и указал его использование, после сборки библиотеки проверил, что она содержит нужные символы, но линковка с либой останавливается с сообщение '(.data.rel.ro+0x18): undefined reference to `typeinfo for ...'.
Буду разбираться дальше.
Спасибо сказали: