2016-09-13 18 views
0

私はアンドロイドNDKプロジェクトに取り組んでいます。プロジェクトファイル(Android.mk)を修正しようとすると、リファレンスを読み込んだ後に-rdynamicというリンクオプションが見つかりましたが、フラグの意味はまだ分かりません。gccのリンクオプション/ LOCAL_CFLAGS -dynamic doは何ですか

私が取り組んでいるプロジェクトです。それは2つの部分を持っています: - 複数のクライアントアプリケーション。 - 複数の共有ライブラリ。 (各クライアントには対応する共用ライブラリーがあります) - バックグラウンド・デーモン・プロセス:プロセス・マネージャーとランチャー。

まず、クライアントアプリケーション。クライアントの実行が開始されると、マネージャプロセスと通信することができます。マネージャはランチャープロセスに基づいて対応する共有ライブラリをロードするためにdlopen()を使用します。その後、マネージャは新しいランチャープロセスを作成します。

リンクフラグはバックグラウンドプロセスと関係がありますが、わかりません。

おかげ


参照:
https://gcc.gnu.org/onlinedocs/gcc/Link-Options.html#Link-Options
-rdynamic
はそれをサポートするターゲットで、ELFリンカーにフラグ-exportダイナミックに合格します。これは、リンカに対して、使用されているシンボルだけでなく、すべてのシンボルを動的シンボルテーブルに追加するように指示します。このオプションは、dlopenを使用する場合や、プログラム内からバックトレースを取得する場合に必要です。

答えて

1

-rdynamicLOCAL_CFLAGSを追加すると、何も行われません。-rdynamicはリンカーフラグです。 LOCAL_LDFLAGSに追加する必要があります。

-rdynamicの詳細については、https://stackoverflow.com/a/12636790/632035を参照してください(この質問は同じではありませんが、答えはよく説明されています)。

関連する問題