GD make test で libiconv_open エラーが出る場合の対処方法

新しいサーバに必要な CPAN モジュールをインストールしまくっているのですが、これまたいつもハマル場所で躓きました。やっぱり些細なことをチマチマとブログの記事に備忘録として登録しておくことも重要だと思い、書いてます。

今回の躓きどころは、GD のインストール。libiconv_open エラーが出る場合の対処方法です。あまり深追いをしてないので、原因追及はなし。libiconv のインストールの仕方がマズイのか、予めインストールされている rpm 環境が影響しているのかは不明。

取りあえず、対処方法のみで。。。

- スポンサーリンク -

GD モジュールの make 時のエラー

Checking if your kit is complete...
Looks good
Unrecognized argument in LIBS ignored: '/usr/local/lib/libiconv.so'
Unrecognized argument in LIBS ignored: '-Wl,-rpath'
Unrecognized argument in LIBS ignored: '-Wl,/usr/local/lib'
Writing Makefile for GD

GD モジュールの make test 時のエラー

PERL_DL_NONLAZY=1 /usr/local/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/GD..........Can't load './blib/arch/auto/GD/GD.so' for module GD: /usr/local/lib/libgd.so.2: undefined symbol: libiconv_open at /usr/local/lib/perl5/5.8.6/x86_64-linux-thread-multi/DynaLoader.pm line 230.
 at t/GD.t line 14
Compilation failed in require at t/GD.t line 14.
BEGIN failed--compilation aborted at t/GD.t line 14.
t/GD..........dubious                                                        
        Test returned status 255 (wstat 65280, 0xff00)
DIED. FAILED tests 1-12
        Failed 12/12 tests, 0.00% okay
t/Polyline....Can't load '/root/.cpan/build/GD-2.32/blib/arch/auto/GD/GD.so' for module GD: /usr/local/lib/libgd.so.2: undefined symbol: libiconv_open at /usr/local/lib/perl5/5.8.6/x86_64-linux-thread-multi/DynaLoader.pm line 230.
 at /root/.cpan/build/GD-2.32/blib/lib/GD/Polyline.pm line 45
Compilation failed in require at /root/.cpan/build/GD-2.32/blib/lib/GD/Polyline.pm line 45.
BEGIN failed--compilation aborted at /root/.cpan/build/GD-2.32/blib/lib/GD/Polyline.pm line 45.
Compilation failed in require at t/Polyline.t line 10.
BEGIN failed--compilation aborted at t/Polyline.t line 10.
t/Polyline....dubious                                                        
        Test returned status 255 (wstat 65280, 0xff00)
DIED. FAILED test 1
        Failed 1/1 tests, 0.00% okay
Failed Test  Stat Wstat Total Fail  Failed  List of Failed
-------------------------------------------------------------------------------
t/GD.t        255 65280    12   23 191.67%  1-12
t/Polyline.t  255 65280     1    2 200.00%  1
Failed 2/2 test scripts, 0.00% okay. 13/13 subtests failed, 0.00% okay.
make: *** [test_dynamic] エラー 255

ってことで、エラーをみればすぐ気がつくのですが、libconv の LIBS の内容が間違っているので libconv をリンクしてないってことですね。CPAN のインストールって基本的にリターンの連打なので、ボーっとしてると見落とします。

対処方法は、

LIBS='-liconv -ljpeg -lfontconfig -lfreetype -lpng12 -lz -lm -lgd'; perl Makefile.PL
と make するだけ。なので、CPAN shell からコマンドを実行する前に、LIBS の内容をセットしておけばOKって訳です。

これでもうまくいかない時は、Makefile を下記のように直接書き換えます。

EXTRALIBS = -L/usr/local/lib -L/usr/X11R6/lib64 -L/usr/local/lib -L/usr/local/lib64 -L/usr/X11R6/lib64 -L/usr/local/lib64 -lXpm -lX11 -lfontconfig -lpng12 -lz -lgd -liconv -ljpeg -lfontconfig -lfreetype -lpng12 -lz -lm -lgd
LDLOADLIBS = -L/usr/local/lib -L/usr/X11R6/lib64 -L/usr/local/lib -L/usr/local/lib64 -L/usr/X11R6/lib64 -L/usr/local/lib64 -lXpm -lX11 -lfontconfig -lpng12 -lz -lm -lgd -liconv -ljpeg -lfontconfig -lfreetype -lpng12 -lz -lm -lgd

これで正常にコンパイルができる。

- スポンサーリンク -