2016-09-13 2 views
0

Я работаю над проектом Android NDK. Когда я пытаюсь изменить файл проекта (Android.mk), я нашел ссылку -rdynamic после прочтения ссылки, я все еще не уверен в значении флага.Что делает опция gcc linking/LOCAL_CFLAGS -rdynamic do

Проект, над которым я работаю. Он состоит из двух частей: - Несколько клиентских приложений. - Несколько общих библиотек. (каждый клиент имеет соответствующую общую библиотеку) - Процессы фонового демона: диспетчер процессов и пусковая установка.

Во-первых, клиентское приложение. Как только клиент начинает работать, он может взаимодействовать с процессом менеджера. Менеджер будет использовать dlopen() для загрузки соответствующей общей библиотеки на основе процесса запуска. После этого менеджер создаст новый процесс запуска.

Я чувствовал, что флаг ссылки имеет какое-то отношение к фоновому процессу, но не уверен.

Благодаря


ссылка:
https://gcc.gnu.org/onlinedocs/gcc/Link-Options.html#Link-Options
-rdynamic
передать флаг-динамический опцией -export к ELF линкера, на цели, которые поддерживают его. Это дает ссылку компоновщику добавлять все символы, а не только используемые, в таблицу динамических символов. Этот параметр необходим для некоторых применений dlopen или для получения обратных трасс из программы.

ответ

1

Добавление -rdynamic в LOCAL_CFLAGS ничего не сделает, поскольку -rdynamic является флагом-линкером. Вам нужно добавить его в LOCAL_LDFLAGS.

Для более подробного объяснения -rdynamic, см. https://stackoverflow.com/a/12636790/632035 (Я знаю, что вопрос не совпадает, но ответ хорошо объясняет этот флаг).