Author |
|
davotoula
Joined: 11 Jun 2008 Posts: 6
|
Posted: Fri 27 Jun '08 13:39 Post subject: Building a module for older release of Apache (2.2.4) |
|
|
We have a module that builds fine against the latest Apache Lounge version of Apache 2.2.9 (including APR UTIL).
We are using Microsoft Visual C++ 2008.
Now we need to compile the module against an older version of Apache 2.2.4 which does not have APR util.
I tried building the module and it compiled OK but it did not load on Apache 2.2.4. The error was:
Code: |
C:\Program Files\Apache Software Foundation\Apache2.2\bin>httpd.exe
httpd.exe: Syntax error on line 484 of C:/Program Files/Apache Software Foundation/Apache2.2/conf/httpd.conf: Cannot load C:/Program Files/Apache Software Foundation/Apache2.2/modules/<module>.so into server: The specified procedure could not be found. |
I suspect this is due to a missmatch of .h and .lib files.
I have now got latest APR from SVN.
1. Do I need to build APR against our current Apache 2.2.4?
2. Which files (.h, .lib) need to be replaced in our Apache 2.2.4 once APR has been built?
3. We are using mod_security2 module that may have been compiled with another version of MVC and is using the runtime library for that older version. Will this cause conflicts with our new module that is compiled with MVC 2008 and using the latest runtime libraries?
thanks |
|
Back to top |
|
admin Site Admin
Joined: 15 Oct 2005 Posts: 692
|
Posted: Mon 30 Jun '08 21:36 Post subject: |
|
|
Just not to get in conficts with mixing APR versions in combination with 2.2.4:
Grab the 2.2.4 source at http://archive.apache.org/dist/httpd/ and build it first.
When you do not want to build it, install the 2.2.4 binary from above link and build it against it.
Further you can mix MVC versions.
Steffen |
|
Back to top |
|
davotoula
Joined: 11 Jun 2008 Posts: 6
|
Posted: Tue 01 Jul '08 15:59 Post subject: |
|
|
Thanks for the input admin but I have already tried this approach.
I found the 2.2.4 installation package and installed it.
Our module requires APR-UTIL so I downloaded the latest sources, compiled them and copied the various libs and header files across to the apache lib / include folders.
I built our module against the Apache lib/include folders.
The module compiled fine but it is not deploying (see error above).
Do I have to retrieve a specific APR-UTIL version?
What version would be appropriate for Apache 2.2.4?
thank you for your input,
dk |
|
Back to top |
|
tdonovan Moderator
Joined: 17 Dec 2005 Posts: 611 Location: Milford, MA, USA
|
Posted: Tue 01 Jul '08 17:39 Post subject: |
|
|
re 'Our module requires APR-UTIL so I downloaded the latest sources, compiled them and copied the various libs and header files across to the apache lib / include folders. "
That doesn't sound like the right thing to do.
Apache 2.2.4 contains apr-util 1.2.8. If you downloaded the "latest sources", that would be apr-util 1.3.2 - which isn't the correct version for Apache 2.2.4.
You certainly don't want to copy these into your Apache 2.2.4 /lib and /include directories!
Your error message doesn't sound like it has anything to do with apr-util or with the Apache version.
If you built your module with Microsoft Visual C++ 2008 , be sure to install the Microsoft Visual C++ 2008 Redistributable Package (x86) on your production system before trying to use your module.
Does your module require any other (non-Apache) .dll files? You can check this using the Windows Dependency Walker utility.
To use it - unzip it into your Apache \bin directory; then: Code: | > CD "C:\Program Files\Apache Software Foundation\Apache2.2\bin"
> PATH=C:\Program Files\Apache Software Foundation\Apache2.2\bin;%PATH%
> depends.exe ..\modules\mod_{your_module}.so | This will show if your system is missing any other .dll files that your module needs.
-tom- |
|
Back to top |
|
davotoula
Joined: 11 Jun 2008 Posts: 6
|
Posted: Tue 01 Jul '08 17:54 Post subject: |
|
|
I see, it is getting a bit clearer.
The apr-util 1.2.8 (bundled with Apache 2.2.4) does not contain apr_memcache which our module requires.
I guess I was hoping to upgrade the apr-util on our Apache 2.2.4 (binary distribution) to a later version, for example apr-util 1.3.2.
If this would require recompiling Apache 2.2.4 from sources then we have to do additional testing on this new binary anyway and then might as well use the Apache 2.2.9 binary distribution.
We were hoping to stay on our current Apache 2.2.4 binary to avoid any side effects (we all know of surprises that come from upgrades) |
|
Back to top |
|
tdonovan Moderator
Joined: 17 Dec 2005 Posts: 611 Location: Milford, MA, USA
|
Posted: Tue 01 Jul '08 18:03 Post subject: |
|
|
That makes sense.
Apache 2.2.9 contains apr-util 1.3.1, which does contain the apr_memcache functions.
It would be much safer to use Apache 2.2.9 than to try to retro-fit any apr-util 1.3.x version into Apache 2.2.4.
-tom- |
|
Back to top |
|