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
これで正常にコンパイルができる。
- スポンサーリンク -
コメントやシェアをお願いします!