Why do we need -rdynamic option in gcc? [duplicate

2019-08-28 03:43发布

问题:

This question already has an answer here:

  • What exactly does `-rdynamic` do and when exactly is it needed? 2 answers

By default all symbols are exported to dynamic table, so why would we use -rdynamic flag? Even if we hide some symbols via attributes/-fvisibility=hidden - -rdynamic doesn't change result, it doesn't unhide previously hidden symbols. So what's the point in it?

回答1:

Symbols are only exported by default from shared libraries. -rdynamic tells linker to do the same for executables. Normally that's a bad idea but sometimes you want to provide APIs for dynamically loaded plugins and then this comes handy (even though one much better off using explicit export file).