2014-07-25 49 views
4

我已經安裝了GD.pm.我想確保它支持PNG。 所以要檢查我是這樣做的:在Perl中安裝GD.pm時啓用PNG支持

$ perl -e 'use GD; $im=GD::Image->new(); print $im->can("png") ? "yes" : "no" , "\n";' 
no 

如你所見。它打印no。 後來我從CPAN用以下步驟下載最新的GD:

> wget http://search.cpan.org/CPAN/authors/id/L/LD/LDS/GD-2.53.tar.gz 
> tar xvfz GD-2.53.tar.gz 
> cd GD-2.44 
> perl Makefile.PL 
> make 
> make test 
> make install 

我希望它包含這樣的線是已安裝的PNG支持的一大特點:

Included Features:   GD_XPM GD_JPEG GD_FONTCONFIG GD_FREETYPE 
GD_PNG GD_GIF GD_GIFANIM GD_OPENPOLYGON GD_UNCLOSEDPOLY GD_ANIMGIF 
GD_FTCIRCLE VERSION_33 

而是我得到這個只有:

Included Features:   GD_GIF GD_GIFANIM GD_OPENPOLYGON 

我沒有成功使用此命令要麼sudo perl Makefile.PL -options "JPEG,FT,PNG"。 它沒有顯示GD_PNG

什麼方式安裝GD.pm與PNG支持?

我需要它來運行circos.

更新:

安裝的libpng和重建GD

$ brew update && brew upgrade 
$ brew install gd 
$ brew install libpng 
$ sudo cpan 
    cpan > force install GD 

爲勸後,我得到這個錯誤:

$ perl -e 'use GD; $im=GD::Image->new(); print $im->can("png") ? "yes" : "no" , "\n";' 
Can't load '/Library/Perl/5.16/darwin-thread-multi-2level/auto/GD/GD.bundle' for module GD: dlopen(/Library/Perl/5.16/darwin-thread-multi-2level/auto/GD/GD.bundle, 1): Library not loaded: libpng15.15.dylib 
    Referenced from: /usr/local/lib/libfreetype.6.dylib 
    Reason: image not found at /System/Library/Perl/5.16/darwin-thread-multi-2level/DynaLoader.pm line 194. 
at -e line 1. 
Compilation failed in require at -e line 1. 
BEGIN failed--compilation aborted at -e line 1. 

更新2: 最後我做這個fixed問題:

$ locate libpng15.15.dylib 
/anaconda/lib/libpng15.15.dylib 
/anaconda/pkgs/libpng-1.5.13-1/lib/libpng15.15.dylib 
/opt/X11/lib/libpng15.15.dylib 
/opt/local/lib/libpng15.15.dylib 

$ ln -s /opt/X11/lib/libpng15.15.dylib /usr/local/lib/libpng15.15.dylib 

$ perl -e 'use GD; $im=GD::Image->new(); print $im->can("png") ? "yes" : "no" , "\n";' 
    yes 
+0

您可能缺少'libpng' /'libpng-dev'。一旦可用,你也需要重建GD。 – Leeft

+1

不要建立你自己的。只需爲您的平臺安裝預構建的軟件包即可。 –

回答

3

你做GD.pm.之前需要庫,依賴在這種特殊情況下,libpng顯然缺失。

正因爲如此依賴的,我建議你使用的軟件包管理器,不CPAN,如果你的Perl是OS附帶的一個:

  • 的MacPorts或自制的OS X
  • apt-get的爲Debian和Ubuntu。
  • yum適用於RHEL,Cent-OS。