はじめに gccの-rdynamic optionの調査メモ。 gcc 9.1.0, glibc 2.29を対象に調査した。 基本内容に差はないと思うが、target archはx86_64-pc-linux-gnu。 TL;DR -rdynamicオプションはリンク時のみ効果がある。 -rdynamicオプションを適用すると、共有ライブラリから実行ファイルのシンボル情報を動的に取得できるので、バックトレースの表示などに使われる。 -rdynamicオプションを適用することで、共有ライブラリとして利用可能な実行ファイルを作成できる。 -rdynamicオプションを適用するとシンボルバッティングや意図せず共有ライブラリに制御されてしまうリスクが増えるので、明確に目的がないなら通常は無効にしておく。 gcc,glibcのソースコードは面白い。 gccのspecファイルむずい。 公式ドキュメント