爲什麼-rdynamic不能在.a文件中導出符號,而是在.o文件中導出符號?GCC -rdynamic不能用靜態庫
我在.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++牛進行編譯)
在這種情況下,Utilities.a中的符號不會被導出(即「objdump -t a.out | grep symbol」爲空)。
如果我使用「ar x」僅使用.o's提取.a和鏈接中的.o文件,則插件將導出並找到這些符號(如果使用了dlopen想知道)。
我試過使用-Wl,-export-dynamic但沒有成功。
我的確有一個解決方法,正如所提到的,但我仍然希望瞭解我缺少的東西。提前致謝 !
非常感謝,我會試一試! – 2011-10-03 02:24:32
確實很有用,謝謝! – 2011-10-04 00:11:17