如何在Ubuntu Linux上的.la文件中转储符号?

时间:2010-07-01 07:29:02

标签: c++ linux ubuntu linker

如何在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

1 个答案:

答案 0 :(得分:4)

问题很可能是你正在使用C而libwebkit有C ++符号。与您在包含文件中看到的相比,C ++符号名称将为mangled

无论如何,要回答这个问题:.la是一个libtool库。通常它指向.so文件:

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

然后在.so文件中,您可以使用nm来显示动态符号:

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

如果这是一个C ++库,那么可以使用-C标志来解码C ++函数名。

$ nm -D -C libwebkit-1.0.so