Что именно делает -rdynamic
(или --export-dynamic
на уровне компоновщика) и как оно относится к видимости символов, как определено флагами -fvisibility*
или видимостью pragma
s и __attribute__
s?Что именно делает `-rdynamic` и когда он нужен?
Для --export-dynamic
, ld(1) упоминает:
... Если вы используете «dlopen», чтобы загрузить динамический объект, который необходимо передать обратно к символам, определенных программой, а не какой-либо другой динамический , то вам, вероятно, понадобится , чтобы использовать этот параметр при связывании самой программы. ...
Я не уверен, что полностью понимаю это. Не могли бы вы привести пример, который не работает без -rdynamic
, но делает с ним?
Edit: Я на самом деле пытался компиляции пару фиктивных библиотек (один файл, несколько файлов, различных -O уровней, некоторые между вызовы функций, некоторые скрытые символы, некоторые видимые), с и без -rdynamic
, и до сих пор я получал байт-идентичные выходы (при постоянном сохранении всех остальных флагов), что довольно озадачивает.
Вы, например, прекрасно понимаете, что означает man-страница. Большое спасибо! – PSkocik