安装环境
FreeBSD 6.4-RELEASE-p3 ,
apr-0.9.17
apr-util-0.9.15
mod_perl-2.0.4
# perl Makefile.PL MP_APXS=/var/www/bin/apxs MP_APR_CONFIG=/usr/local/apr/bin/apr-config && make
错误如下:
cp lib/ModPerl/PerlRunPrefork.pm ../blib/lib/ModPerl/PerlRunPrefork.pm
cp lib/ModPerl/Registry.pm ../blib/lib/ModPerl/Registry.pm
cp lib/ModPerl/RegistryCooker.pm ../blib/lib/ModPerl/RegistryCooker.pm
cp lib/ModPerl/PerlRun.pm ../blib/lib/ModPerl/PerlRun.pm
cp lib/ModPerl/RegistryPrefork.pm ../blib/lib/ModPerl/RegistryPrefork.pm
cp lib/ModPerl/RegistryLoader.pm ../blib/lib/ModPerl/RegistryLoader.pm
cp lib/ModPerl/RegistryBB.pm ../blib/lib/ModPerl/RegistryBB.pm
cp Base64.pm ../../../blib/lib/APR/Base64.pm
/usr/local/bin/perl /usr/local/lib/perl5/5.8.9/ExtUtils/xsubpp -typemap /usr/local/lib/perl5/5.8.9/ExtUtils/typemap -typemap /var/tmp/mod_perl-2.0.4/xs/typemap Base64.xs > Base64.xsc && mv Base64.xsc Base64.c
cc -c -I/var/tmp/mod_perl-2.0.4/src/modules/perl -I/var/tmp/mod_perl-2.0.4/xs -I/usr/local/apr/include/apr-0 -I/usr/local/apr/include/apr-0 -I/usr/local/include -I/var/www/include -DAPPLLIB_EXP="/usr/local/lib/perl5/5.8.9/BSDPAN" -DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H -fno-strict-aliasing -pipe -I/usr/local/include -DMOD_PERL -DMP_COMPAT_1X -D_REENTRANT -D_THREAD_SAFE -DAP_HAVE_DESIGNATED_INITIALIZER -O2 -fno-strict-aliasing -pipe -DVERSION=\"0.009000\" -DXS_VERSION=\"0.009000\" -DPIC -fPIC "-I/usr/local/lib/perl5/5.8.9/mach/CORE" -DMP_HAVE_APR_LIBS Base64.c
In file included from Base64.xs:24:
/var/tmp/mod_perl-2.0.4/xs/modperl_xs_typedefs.h:67: error: syntax error before '*' token
/var/tmp/mod_perl-2.0.4/xs/modperl_xs_typedefs.h:67: warning: data definition has no type or storage class
*** Error code 1
Stop in /var/tmp/mod_perl-2.0.4/WrapXS/APR/Base64.
*** Error code 1
Stop in /var/tmp/mod_perl-2.0.4/WrapXS/APR.
*** Error code 1
Stop in /var/tmp/mod_perl-2.0.4/WrapXS.
*** Error code 1
网上有关于这个错误的patch,但不适合我这里。
Index: lib/ModPerl/BuildMM.pm
===================================================================
--- lib/ModPerl/BuildMM.pm (revision 648960)
+++ lib/ModPerl/BuildMM.pm (working copy)
@@ -359,7 +359,7 @@
$apr_config ||= $build->get_apr_config();
- if ($path =~ m/(Thread|Global)Mutex/) {
+ if ($path =~ m/(Thread|Global)(Mutex|RWLock)/) {
return unless $apr_config->{HAS_THREADS};
}
问题来源ARP安装时没有增加--enable-threads 选项。重新安装apr,并增加enable-threads 。再安装mod_perl即可。
# ./configure --enable-threads && make && make install && cd /var/tmp/mod_perl-2.0.4/ && perl Makefile.PL MP_APXS=/var/www/bin/apxs MP_APR_CONFIG=/usr/local/apr/bin/apr-config && make && make install