2011-02-13 67 views
5

首先我有「include_HEADERS ='我的公共標題'」和「libfoobar_la_SOURCES ='私人資源''私人標題'」。一切皆好。它編譯/安裝/鏈接。但是當我做「納米-C my_instaed_lib.so」我得到:automake + libtool + C++ =非常臃腫的界面

00005be0 T yyget_debug(void*) 
00005b00 T yyget_extra(void*) 
00005bf0 T yyset_debug(int, void*) 
00005bb0 T yyset_extra(FM4::LexImpl*, void*) 
00005b40 T yyget_column(void*) 
00005b10 T yyget_lineno(void*) 
00006180 T yyset_column(int, void*) 
000061e0 T yyset_lineno(int, void*) 
... 

這從來沒有在任何頭部聲明。

000091f0 T FM4::PrcImpl::CollectMacro() 
000089d0 T FM4::PrcImpl::CollectQuote() 
00008870 T FM4::PrcImpl::CollectComment() 
00009350 T FM4::PrcImpl::Collect() 
000093f0 T FM4::PrcImpl::Process() 
00008700 T FM4::PrcImpl::PrcImpl(FM4::Processor*) 
00008590 T FM4::PrcImpl::PrcImpl(FM4::Processor*) 
00009970 W FM4::PrcImpl::~PrcImpl() 
00009a00 W FM4::PrcImpl::~PrcImpl() 
... 

這在私人沒有安裝標題。

我讀了automake/libtool手冊兩次,但我不知道如何從界面剝離這個廢話? 或者什麼可以暴露這個垃圾公共API。如何控制導出到公共API的內容?

+0

你用flex/lex做些什麼? – Anycorn 2011-02-13 00:33:18

回答

8

查找libtool選項-export-symbols。給它一個你想要導出的符號列表。默認情況下,libtool導出所有符號。

3

如果您冒險,並且可以確定您正在編譯一個新的GCC(我認爲≥4.2對於良好的支持是必要的),visibility可以提供幫助。

限制默認可見性(-fvisibility=hidden)並明確標記要用__attribute__((visibility("default")))導出的函數。