2016-09-13 1 views
0

Ich arbeite an einem Android NDK-Projekt. Wenn ich versuche, die Projektdatei (Android.mk) zu ändern, fand ich die Verknüpfungsoption -dynamic nach dem Lesen der Referenz, ich bin mir immer noch nicht sicher, was die Flagge bedeutet.Was macht GCC Linking-Option/LOCAL_CFLAGS-Rdynamic tun

Das Projekt, an dem ich arbeite. Es besteht aus zwei Teilen: - Mehrere Client-Anwendungen. - Mehrere gemeinsam genutzte Bibliotheken. (Jeder Client hat eine entsprechende gemeinsame Bibliothek) - Hintergrund-Daemon-Prozesse: ein Prozess-Manager und ein Launcher.

Zuerst eine Client-Anwendung. Sobald der Client gestartet wird, kann er mit dem Managerprozess kommunizieren. Der Manager verwendet dlopen(), um die entsprechende gemeinsam genutzte Bibliothek basierend auf dem Launcher-Prozess zu laden. Danach erstellt der Manager einen neuen Startprozess.

Ich fühlte, dass die Link-Flag etwas mit dem Hintergrundprozess zu tun hat, aber nicht sicher.

Dank


Referenz:
https://gcc.gnu.org/onlinedocs/gcc/Link-Options.html#Link-Options
Option -rdynamic
Geben der Flagge -export dynamische zum ELF Linkers auf Ziele, die sie unterstützen. Dies weist den Linker an, alle Symbole, nicht nur benutzte, zu der dynamischen Symboltabelle hinzuzufügen. Diese Option wird für einige Verwendungen von dlopen oder zum Erlangen von Rückverfolgungen innerhalb eines Programms benötigt.

Antwort

1

Hinzufügen von zu LOCAL_CFLAGS wird nichts tun, wie ist ein Linker-Flag. Sie müssen es zu LOCAL_LDFLAGS hinzufügen.

Für eine ausführlichere Erklärung der -rdynamic, siehe https://stackoverflow.com/a/12636790/632035 (Ich weiß, die Frage ist nicht das Gleiche, aber die Antwort erklärt die Flagge gut).