CentOS5 64bit版でmod_perlのmakeでエラー
perlbrewでインストールしたperlでapacheとmod_perlをソースビルドしようとしたら
mod_perlのmakeでエラーが発生。
以下はその対応記録。
エラー内容
libperl.a(op.o): relocation R_X86_64_32S against `PL_sv_yes' can not be used when making a shared object; recompile with -fPIC libperl.a: could not read symbols: Bad value
ググってみたら、これらがHITした。
http://www.gossamer-threads.com/lists/modperl/modperl/101165
http://old.nabble.com/Compiling-Perl-+-mod_perl-on-64-bit-linux-td19153871.html
どうもCentOSの64bit版でのみ発生するっぽい。
オプション付け直してperlを再インストールする必要がある?
perlを普通にダウンロードしてリビルド
上記のスレッドを参考にして、
perlのコンフィグオプションを以下のようにして*1リビルドしたら
mod_perlのmake通った!
sh ./Configure -de -Accflags='-fPIC' -Dloclibpth="/usr/lib64"
perlbrewでもやりたいが…
perlbrewでも一応コンフィグオプション渡せるみたい。
-D pass through switches to the perl Configure script perlbrew install perl-5.10.1 -D=usemymalloc
しかしソースを見ても「-A」オプションを指定する箇所が無い…
ので、独自パッチを当てた。
App::perlbrew 0.07
diff /usr/local/perlbrew/perls/perl-5.12.1/lib/site_perl/5.12.1/App/perlbrew.pm-org /usr/local/perlbrew/perls/perl-5.12.1/lib/site_perl/5.12.1/App/perlbrew.pm 209a210 > my @a_options = @{ $self->{A} }; 241c242 < "sh Configure $configure_flags " . join( ' ', map { "-D$_" } @d_options ), --- > "sh Configure $configure_flags " . join( ' ', map { "-D$_" } @d_options ) . " " . join( ' ', map { "-A$_" } @a_options ),
perlbrew 0.07
# diff /usr/local/perlbrew/bin/perlbrew-org /usr/local/perlbrew/bin/perlbrew 12a13 > A => [], 19a21 > 'A|A=s@' => $opt->{A},