[Linux] Loading Linux modules in Apache?

jaco at coocoo.za.net jaco at coocoo.za.net
Sun Jun 26 18:05:22 GMT 2005


Hello All,

I am trying to load a Linux module in Apache 2.0.53, but I am running into
some problems.

I am not sure if this is even possible, but I sure hope so. ;)

This is the scenario:
I have a precompiled linux DSO module for Apache 2. This module loads fine
on Linux, but pukes when I try to load it on FreeBSD.

First of all a question: Is there any special setting that I must change
in order for apache to use be able to see the shared libraries that is in
the linux directectory? This directory is located in /usr/compat/linux/.

The module is branded as Linux.

When I try to load the module in Apache it complains about shared
libraries not being found. These libraries exist in /usr/compat/linux/lib
and /usr/compat/linux/usr/lib. They also work for the other linux
applications that I run, ie, they are found.

I also tried to link the libs in /usr/compat/linux/lib to /usr/lib. I KNOW
that this can not be the right way to do it, but this sort of worked (no
more shared library not found), but then the module groaned about some
undefined symbols. I think this is because it finds some OTHER module with
the same name as the one it's linked against in linux and then cannot find
the stuff it is looking for. Here is the exact error message:
Syntax error on line 1108 of /usr/local/etc/apache2/httpd.conf:
Cannot load /usr/local/libexec/apache2/mod_V2_mgrequest94.so into server:
/usr/local/libexec/apache2/mod_V2_mgrequest94.so: Undefined symbol
"__gxx_personality_v0"

Here is the output of ldd:
root at disco-bear# ldd /usr/local/libexec/apache2/mod_V2_mgrequest94.so
/usr/local/libexec/apache2/mod_V2_mgrequest94.so:
  libpthread.so.0 => /usr/local/lib/libpthread.so.0 (0x281b3000)
  libstdc++.so.3 => /usr/lib/compat/libstdc++.so.3 (0x28204000)
  libm.so.6 => /usr/local/lib/libm.so.6 (0x28249000)
  libgcc_s.so.1 => /usr/local/lib/libgcc_s.so.1 (0x2826a000)
  libc.so.6 => /usr/local/lib/libc.so.6 (0x28272000)
  ld-linux.so.2 (0x2839d000)
  libm.so.2 => /usr/lib/compat/libm.so.2 (0x283b0000)

(some of these are symlinked to /usr/compat/linux/lib)

Is there anything special that I must do to be able to load this module in
Apache?

OS: FreeBSD 5.4-RELEASE
Apache: 2.0.53
Linux Base: Redhat 7.2

Thank you in advance for your help.
---Jaco


More information about the freebsd-emulation mailing list