On Sun, 14 May 2000, Petro wrote:
I am attempting to compile, install, and play with Courier on a i386
OpenBSD box, and I am running across this little problem in soxwrap:
soxwrap.c: In function `dl_get':
soxwrap.c:115: `RTLD_NOW' undeclared (first use in this function)
soxwrap.c:115: (Each undeclared identifier is reported only once
soxwrap.c:115: for each function it appears in.)
RTLD_NOW should be defined in your <dlfcn.h> as a flag to set immediate
binding of shared library addresses.
Do you have something equivalent instead?
No, the closest, in fact, the only RTLD_* that is defined in
/usr/include/dlfcn.h is RTLD_LAZY. Some digging (but not asking) on
the OpenBSD misc mailing list shows this same problem cropping up
with PHP4. Apparently the fix--which I am trying now (compiling, it's
a slow box) is to change RTLD_NOW to RTLD lazy in the source, or to
define it in the header. I am not really sure how to go about doing
that yet (I'm not much of a programmer).
This apparently changes things to "Deferred function
binding". Is this going to cause a problem?
The other option, I think, would be to define it in
/usr/include/dlfcn.h, however, this may not be a good idea, if for
come reason OpenBSDs linker doesn't support immediate binding.
Interestingly enough, Linux doesn't define it in
/usr/include/dlfcn.h, but does in /usr/include/bits/dlfcn.h, which
gets included by /usr/include/dlfcn.h. Solaris does define it
explicitly in /usr/include/dlfcn.h, along with a lot of others that
neither Linux nor OpenBSD do.
Oh well, I guess we'll see.
Thanks for your information.