We help IT Professionals succeed at work.

'unresolvable symbol' in shared lib on IRIX6.2: __record_needed_destruction

kfcox
kfcox asked
on
Medium Priority
595 Views
Last Modified: 2013-12-26
When attempting to run a binary which was dynamically linked to a shared library (.so file), rld gives me the following error:

"rld: Fatal Error: attempted access to unresolvable symbol in libava2.so: __record_needed_destruction"

where libava2.so is a (quite simple) library that I created.  How do I fix this?

Hint: it may have something to do w/ old 32-bit vs. new 32-bit and LD_LIBRARY_PATH vs. LD_LIBRARYN32_PATH environment variables.
Comment
Watch Question

Nope, your lib paths are fine, because the runtime linker
did find the shared object; it just complained about the
symbol itself (see error message). Did you tell the
the linker (when you created the .so file) to export the
symbols you want to access at runtime? (like _record_needed_
descturction).

It depends a bit on the Un*x box your'e running on; on my
SP/2 AIX thingy, I pass the following flags to the linker:

   -bM:SRE -bnoentry -berok -bEexport.exp

where file export.exp contains the names of the symbols
to be exported. On a Linux box, the flags look like this:

   -shared -fPIC

check your manuals for 'ld' ...

kind regards,

Jos aka jos@and.nl

Not the solution you were looking for? Getting a personalized solution is easy.

Ask the Experts
ps. The Linux flags are incomplete; the complete line of
flags looks like this:

-export-dynamic -shared -fPIC

kind regards,

Jos aka jos@and.nl

Author

Commented:
this symbol is in
        /usr/lib/libebtctudl.so
Possible reasons:
        1. not specified in library list for the linker
        2. lib cannot be accessed/found at runtime (see your
            LD_LIBRARY*_PATH, see also linker options:
                -force_load, -delay_load, -default_delay_load )

To find out which shared libs will be used at runtime, try:
        setenv _RLD_PATH /usr/lib/rld.debug
        setenv _RLD_ARGS "-v -log any_file"
        your_executable

Good Luck, Achim

What is the /usr/lib/libebtctudl.so library and what package is it a part of?  It's not on my system, and I can't find any mention of it anywhere!!

Author

Commented:
/usr/lib/libebtctudl.so is new in IRIX 6.x, contact SGI to ask
for its purpose. Anyway, it should be founf on your distribution
CDs (see Find/Search functionality in Toolchest->SoftwareManager)

To solve your problem try to find out which source or library
references routines in /usr/lib/libebtctudl.so .
Use the -v and/or -m option of the the linker (take care if you
use cc or CC for linking).
Access more of Experts Exchange with a free account
Thanks for using Experts Exchange.

Create a free account to continue.

Limited access with a free account allows you to:

  • View three pieces of content (articles, solutions, posts, and videos)
  • Ask the experts questions (counted toward content limit)
  • Customize your dashboard and profile

*This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

OR

Please enter a first name

Please enter a last name

8+ characters (letters, numbers, and a symbol)

By clicking, you agree to the Terms of Use and Privacy Policy.