cunixlinkerfortransgi

How can I find out which library is home to a given object?


I'm programming in FORTRAN and C on an SGI running Irix 6.5, but this should be applicable to all Unix-like systems. How do I find which library I need to link to my program when I get an "unresolved text symbol" link error? Here's an example of what I'm seeing from the linker:

ld32: ERROR  33 Unresolved text symbol "ortho2_" -- first referenced by ./libfoo.a

Do I just have to know which libraries are required, or is there some tool or command that can help me figure this out?


Solution

  • You can use the nm command to list the dynamic symbols from a shared library:

    nm -D /lib/libc.so.6
    

    and then grep for the symbol you are looking for. Omit the -D for static libraries. You can use this in a loop or with xargs to scan multiple libraries.

    I usually just use google (assuming the symbol is from a publicly available library).