Почему -rdynamic не экспортирует символы в файлы .a, а экспортирует символы в файлы .o?
У меня есть приложение и плагин в файле .so. Основное приложение связано с использованием ряда объектных файлов и одной статической библиотеки, например:
CXXFLAGS = $(CXXFLAGS_COMMON) -rdynamic
STATICLIBS = ../Utilities/Utilities.a
...
all:
$(CXX) $(CXXFLAGS) -o $(SAMPLE) main.o $(STATICLIBS) $(SHAREDLIBS) $(INCLUDES)
(CXX - это g ++ 4.5.2 на Ubunut, я использую в основном -std = c ++ Ox для компиляции)
В этом случае символы в Utilities.a не экспортируются (т. Е. "Objdump -t a.out | grep symbol" пусто).
Если я использую «ar x» для извлечения файлов .o в .a и ссылки, используя только .o, то символы экспортируются и обнаруживаются плагинами (которые загружаются с помощью dlopen, если вам интересно ).
Я пытался использовать -Wl, -export-dynamic, но безуспешно.
У меня есть обходной путь, как уже упоминалось, но я все еще хотел бы понять, что мне не хватает. Заранее спасибо!