perl - 在 Perl 中安装 GD.pm 时启用 PNG 支持

标签 perl gd osx-mavericks cpan circos

我已经安装了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

如何安装支持 PNG 的 GD.pm?

我需要它来运行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

最佳答案

在制作 GD.pm 之前,您需要库作为依赖项。在这种特殊情况下,libpng 显然丢失了。

由于这种依赖性,如果您的 Perl 是操作系统附带的,我建议您使用包管理器,而不是 CPAN:

  • MacPorts 或 OS X 自制程序
  • apt-get 适用于 Debian 和 Ubuntu。
  • 适用于 RHEL、Cent-OS。

关于perl - 在 Perl 中安装 GD.pm 时启用 PNG 支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24956482/

相关文章:

perl - 如何在不丢失精度的情况下打印 Perl bignum?

php - 有没有办法将 gd 图像资源变成文件流资源?

php - 如何在PHP中绘制交互式图像?

macos - 由于 "unknown message digest algorithm",curl 无法访问 github.com

perl - 如何在运行时在 Perl 中加载不在 INC 中的模块?

asp.net - 经典的 ASP 形式到 perl,反之亦然

php - 将 imagedestroy() 从光盘中删除

objective-c - Mavericks 上 NSWindow contentView 的奇怪问题

macos - 无法在 OSX Mavericks 上使用 MAMP 安装 drupal 7.24

linux - 我如何使用 perl cd 进入一个目录?