Subject: Re: multibyte locale stuff
To: None <itojun@iijlab.net>
From: Todd Vierling <tv@wasabisystems.com>
List: tech-userlevel
Date: 01/24/2001 14:30:47
On Thu, 25 Jan 2001 itojun@iijlab.net wrote:
: > - libc.a (for static linked binary) can enjoy singlebyte locale only.
: > - libc.so (for shared binary) can enjoy multibyte locale library
: > support. multibyte locale support needs /usr/lib/runemodule/*.so to
: > get dlopen'ed at runtime.
:
: it was found that, with older crt0.o, it is impossible to use dlopen()
: from within libc (unless the user application code uses dlopen already).
: if we put reference to libc, older binaries dies with unresolvable
: symbol. i'll try to hack it up, or change some strategy. anyway,
: it won't appear too soon. sorry about the noise.
Static binaries plus dlopen() is a very tricky (and in some cases completely
losing) proposition. You need a dynamic linker (/usr/libexec/ld.{elf_,}so)
to make that work. It's best not to attempt to use dlopen() from static
binaries.
Note that e.g. Solaris worked around this by providing another copy of the
dynamic linker in /etc/lib, along with some modules. Such binaries are
linked "dynamically", but with the special dynamic linker in /etc/lib, and
linked against the ("static") libc.a. Therefore these not-really-static
binaries had no dependency on libc.so or /usr, but could still dlopen()
things.
--
-- Todd Vierling <tv@wasabisystems.com> * Wasabi NetBSD: Run with it.
-- NetBSD 1.5 now available on CD-ROM -- http://www.wasabisystems.com/