[Linux] Loading Linux modules in Apache?

Vladimir Grebenschikov vova at fbsd.ru
Sun Jun 26 18:25:06 GMT 2005


В вс, 26/06/2005 в 19:59 +0200, jaco at coocoo.za.net пишет:
> 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. ;)

I guess you have some choices:

- (easyest) Install linux apache and run whole beast under linux
emulation
- (much harder) You can try to mix ABI in single binary (just like win
or mplayer does with windows DLLs) but, it is not easy task
- write module wrapper for apache, it will consist of two parts - one
FreeBSD binary (loaded into bsd apache), another - linux  (it part will
load your linux apache module). Parts should be connected by some IPC
and apache module interface should be exported via this IPC.

> 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
> _______________________________________________
> freebsd-emulation at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-emulation
> To unsubscribe, send any mail to "freebsd-emulation-unsubscribe at freebsd.org"
-- 
Vladimir B. Grebenschikov
vova at fbsd.ru


More information about the freebsd-emulation mailing list