我刚刚在Ubuntu上构build了一个共享库,当我尝试使用该函数时,加载该库的应用程序报告未find“xxx”符号。
我想检查(即列出)由我的图书馆出口的function,所以我可以进一步调查这个问题。
相关细节:
OS:Ubuntu 9.10编译器:gcc 4.4.1连接器:GNU ld 2.20
尝试nm实用程序。
GNU nm列出了来自目标文件objfile ….的符号。如果没有目标文件被列为参数,则nm假定文件a.out。 [参考]
nm -D -C -g <library>
运作也很好。
您的共享库是在库加载路径中还是在应用程序的运行时搜索路径中? 这听起来像动态链接器无法找到你的库。 尝试在应用程序上运行ldd
,以查看是否可以在运行时找到该库, 例如 :
$ ldd /usr/bin/less linux-gate.so.1 => (0x0072a000) libncurses.so.5 => /lib/libncurses.so.5 (0x00c68000) libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0x007c7000) libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0x00286000) /lib/ld-linux.so.2 (0x002a1000)
有关库搜索路径的其他详细信息,请参见ld.so(8)手册页。