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

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.
kfcoxAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

jos010697Commented:
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
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
jos010697Commented:
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
0
kfcoxAuthor 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

0
ahoffmannCommented:
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!!
0
kfcoxAuthor 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).
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
System Programming

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.