CentOS6 64bit + Perl 5.24.4 + mod_perl 2.0.11のコンパイルでエラー

CentOS6.10 64bit
Perl 5.24.4
mod_perl 2.0.10

上記環境でコンパイルしようとすると以下のようなエラーが出て
mod_perlのコンパイルが通りません。

/usr/bin/ld: /usr/local/perl-5.24.4/lib/5.24.4/x86_64-linux-thread-multi/CORE/libperl.a(op.o): relocation R_X86_64_32S against `PL_opargs' can not be used when making a shared object; recompile with -fPIC
/usr/local/perl-5.24.4/lib/5.24.4/x86_64-linux-thread-multi/CORE/libperl.a: could not read symbols: Bad value

海外のフォーラムで解決方法を探ると…
どうやらCentOSの64bitを利用時に、perlのコンパイルオプションが必要のようです。昔、Perl 5.16でも同様のエラーがあったんですが、5.24でも変わらずでしたので修正方法を紹介。

wget "https://www.cpan.org/src/5.0/perl-5.24.4.tar.gz"
tar zxvf perl-5.24.4.tar.gz
cd perl-5.24.4
./Configure -Dprefix=/usr/local/perl-5.24.4 -Accflags='-fPIC' -Dloclibpth="/usr/lib64"  -Dusethreads -de
make
make test
make install

PREFIXは /usr/local/perl-5.24.4 にしているので、こちらは適宜変更。

これで、mod_perlを導入。
apacheもコンパイルで導入しているので、apxsの位置が違います。

wget "http://ftp.jaist.ac.jp/pub/apache/perl/mod_perl-2.0.11.tar.gz"
tar zxvf ./mod_perl-2.0.11.tar.gz
cd ./mod_perl-2.0.11
/usr/local/perl-5.24.4/bin/perl ./Makefile.PL USE_APXS=1 WITH_APXS=/usr/local/apache/bin/apxs EVERYTHING=1
make
make install

こんな感じです。

+--------------------------------------------------------------+
|                                                              |
| For details on getting started with mod_perl 2, see:         |
|                                                              |
|   http://perl.apache.org/docs/2.0/user/intro/start_fast.html |
|                                                              |
|                                                              |
| Found a bug?  File a bug report:                             |
|                                                              |
|   http://perl.apache.org/bugs/                               |
|                                                              |
+--------------------------------------------------------------+

無事に導入できました。

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください