4

I have already installed GD.pm. I want to make sure it supports PNG. So to check that I do this:

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

As you see. It prints no. Then I download the latest GD from CPAN with the following process:

> 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

I expect it to contain the line like this which is a hallmark of the installed PNG support:

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

But instead I got this only:

Included Features:          GD_GIF GD_GIFANIM GD_OPENPOLYGON

I wasn't successful with this command either sudo perl Makefile.PL -options "JPEG,FT,PNG". It didn't show GD_PNG.

What's the way to install GD.pm with PNG support?

I need it to run circos.

Update:

After installing libpng and rebuilding GD

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

as adviced, I got this error:

$ 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.

Update 2: Finally I fixed the problem by doing this:

$  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
Community
  • 1
  • 1
pdubois
  • 6,692
  • 15
  • 58
  • 89

1 Answers1

3

You need libraries as dependencies before making GD.pm. In this particular case libpng is obviously missing.

Because of that dependency, I recommend that you use package managers, not CPAN, if your perl is the one that comes with your OS:

  • MacPorts or homebrew for OS X
  • apt-get for Debian and Ubuntu.
  • yum for RHEL, Cent-OS.
dankogai
  • 1,589
  • 11
  • 7