Re: dlopen: resolving external library symbols to calling program
- From: Alejandro Pulver <alepulver@xxxxxxxxxxx>
- Date: Fri, 30 Nov 2007 16:40:33 -0300
On Fri, 30 Nov 2007 19:02:01 +0200
Kostik Belousov <kostikbel@xxxxxxxxx> wrote:
On Fri, Nov 30, 2007 at 01:28:58PM -0300, Alejandro Pulver wrote:
Hello.You are looking at the wrong symbol table. ELF objects have the dynamic
When I was updating the games/deng port, I found it failed at runtime
with the following error:
% doomsday
While opening dynamic library
/usr/local/lib/libdropengl.so:
/usr/local/lib/libdropengl.so: Undefined symbol "ArgExists"
DD_InitDGL: Loading of libdropengl.so failed.
(null).
The function is defined in m_args.c which is included in both
"doomsday" and "libdropengl.so". But nm(1) reports it as undefined for
"libdropengl.so". Also, it is loaded with RTLD_NOW.
% nm `which doomsday` | grep ArgExists
080d9ef0 T ArgExists
symbol table that is used during run-time linking, and symbol table used
by the static linker ld. The former table is shown by nm -D.
I suspect that you need to link the doomsday binary with the
--export-dynamic flag. See the info ld for details.
It worked, thank you very much. I am reading some books that explain
the basics of COFF/ELF formats (like Write Great Code Volume 2:
Thinking Low-Level, Writing High-Level), but didn't know about the
dynamic symbol table.
I found the following article which briefly describes it (though it's
for Solaris):
http://blogs.sun.com/ali/entry/inside_elf_symbol_tables
Now that I remember, the games/quakeforge port had the same problem.
But someone fixed it by referencing the symbol (it was only one
function) with a function pointer so it got exported in the dynamic
table. In this case, could that be done with "-u symbol" when linking
the executable, or it isn't possible to export a symbol with linker
parameters?
Thanks and Best Regards,
Ale
Attachment:
signature.asc
Description: PGP signature
- Follow-Ups:
- Re: dlopen: resolving external library symbols to calling program
- From: Kostik Belousov
- Re: dlopen: resolving external library symbols to calling program
- References:
- dlopen: resolving external library symbols to calling program
- From: Alejandro Pulver
- Re: dlopen: resolving external library symbols to calling program
- From: Kostik Belousov
- dlopen: resolving external library symbols to calling program
- Prev by Date: Re: dlopen: resolving external library symbols to calling program
- Next by Date: Re: dlopen: resolving external library symbols to calling program
- Previous by thread: Re: dlopen: resolving external library symbols to calling program
- Next by thread: Re: dlopen: resolving external library symbols to calling program
- Index(es):
Relevant Pages
|
|