2010-07-01 31 views
3

如何在Ubuntu Linux上的.la文件中轉儲符號?如何在Ubuntu Linux上的.la文件中轉儲符號?

我得到這個連接錯誤:

main.c:(.text+0xbfb): undefined reference to `Browser_new' 

而且我覺得我的main.c被鏈接到的libwebkit-1.0.la。那麼我怎麼才能知道libwebkit-1.0.la是否有符號'Browser_new'?

CXXLD libwebkit-1.0.la 
    CCLD Programs/GtkLauncher 

回答

4

問題很可能是您正在使用C而libwebkit具有C++符號。與您在包含文件中看到的內容相比,C++符號名稱將爲mangled

無論如何,要回答這個問題:.la是一個libtool庫。通常它指向一個.so文件:

$ grep dlname libwebkit-1.0.la 
dlname='libwebkit-1.0.so' 

,然後在.so文件,你可以用納米來顯示動態符號:

$ nm -D libwebkit-1.0.so 
... 

如果這是一個C++庫,那麼你可以使用-C標誌去除C++函數名稱。

+0

謝謝。但是當我嘗試「nm -D libwebkit-1.0.so | grep Browser *」或「nm -D -C libwebkit-1.0.so | grep Browser *」時,我只能看到「U _ZN17Browser17testMsgEP14_WebKitWebView」。但在我的Browser.h中,(一個C++類)我有更多的公有和私有方法,而不僅僅是一個testMsg())。 – michael 2010-07-02 01:36:09

+0

這是你自己的Browser.h?如果是這樣,這聽起來像你在.h中的方法,但沒有實現。 – richq 2010-07-09 18:43:43

相關問題