问题
I have been trying to troubleshoot why CPAN GD module fails to install using Cygwin for 2 days now. Any help is much appreciated. Thanks!
cpan install GD Going to read '/home/xxxxxxxxxx/.cpan/Metadata' Database was generated on Sat, 27 Dec 2014 12:17:02 GMT Running install for module 'GD' Running make for L/LD/LDS/GD-2.56.tar.gz Checksum for /home/xxxxxxxxxx/.cpan/sources/authors/id/L/LD/LDS/GD-2.56.tar.gz ok CPAN.pm: Going to build L/LD/LDS/GD-2.56.tar.gz Configuring for libgd version 2.1.0. Checking for stray libgd header files... ** WARNING: found gd.h header file in /usr/include/gd.h, but it is expected at /usr/local/include/gd.h. This may cause compile errors! ** ** WARNING: found gd.h header file in /usr/include/gd.h, but it is expected at /usr/local/include/gd.h. This may cause compile errors! ** ** Possible problems found ** Included Features: GD_JPEG GD_GIF GD_GIFANIM GD_OPENPOLYGON GD library used from: /usr/local Created MYMETA.yml and MYMETA.json Creating new 'Build' script for 'GD' version '2.56' Building GD Extracting Image.pm (with variable substitutions) gcc -I/usr/local/include -I/usr/lib/perl5/5.14/x86_64-cygwin-threads/CORE -DXS_VERSION="2.56" -DVERSION="2.56" -DHAVE_JPEG -DHAVE_GIF -c -DPERL_USE_SAFE_PUTENV -U__STRICT_ANSI__ -fno-strict-aliasing -pipe -fstack-protector -O3 -o lib/GD.o lib/GD.c ExtUtils::Mkbootstrap::Mkbootstrap('blib/arch/auto/GD/GD.bs') g++ --shared -Wl,--enable-auto-import -Wl,--export-all-symbols -Wl,--enable-auto-image-base -fstack-protector -o blib/arch/auto/GD/GD.dll lib/GD.o /usr/lib/perl5/5.14/x86_64-cygwin-threads/CORE/libperl.dll.a -L/usr/local/lib -ljpeg -lz -lgd lib/GD.o:GD.c:(.text+0xd1b): undefined reference to `gdImageCreateFromGd2Ptr' lib/GD.o:GD.c:(.text+0xd1b): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `gdImageCreateFromGd2Ptr' lib/GD.o:GD.c:(.text+0xeec): undefined reference to `gdImageCreateFromGd2Ptr' lib/GD.o:GD.c:(.text+0xeec): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `gdImageCreateFromGd2Ptr' lib/GD.o:GD.c:(.text+0x1bfc): undefined reference to `gdImageCreateFromGd2Part' lib/GD.o:GD.c:(.text+0x1bfc): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `gdImageCreateFromGd2Part' lib/GD.o:GD.c:(.text+0x39b8): undefined reference to `gdImageGd2Ptr' lib/GD.o:GD.c:(.text+0x39b8): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `gdImageGd2Ptr' lib/GD.o:GD.c:(.text+0x3c16): undefined reference to `gdImageGd2Ptr' lib/GD.o:GD.c:(.text+0x3c16): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `gdImageGd2Ptr' lib/GD.o:GD.c:(.text+0x3e4f): undefined reference to `gdImageJpegPtr' lib/GD.o:GD.c:(.text+0x3e4f): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `gdImageJpegPtr' lib/GD.o:GD.c:(.text+0x11ec9): undefined reference to `gdImageCreateFromJpeg' lib/GD.o:GD.c:(.text+0x11ec9): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `gdImageCreateFromJpeg' lib/GD.o:GD.c:(.text+0x12175): undefined reference to `gdImageCreateFromJpegCtx' lib/GD.o:GD.c:(.text+0x12175): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `gdImageCreateFromJpegCtx' collect2: error: ld returned 1 exit status error building blib/arch/auto/GD/GD.dll from lib/GD.o at /usr/lib/perl5/5.14/ExtUtils/CBuilder/Base.pm line 310. LDS/GD-2.56.tar.gz ./Build -- NOT OK Running Build test Can't test without successful make Running Build install Make had returned bad status, install seems impossible make -v GNU Make 4.0 Built for x86_64-pc-cygwin Copyright (C) 1988-2013 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.
回答1:
I believe you have two versions of the GD library installed. One in /usr
and one in /usr/local
. It's using the header file from /usr
and the shared libraries from /usr/local
. The hint is this.
** WARNING: found gd.h header file in /usr/include/gd.h, but it is expected at /usr/local/include/gd.h. This may cause compile errors! **
You probably have only the GD runtime (shared library) installed in /usr/local
. In desperation, GD.pm is grabbing the headers from the default location in /usr
.
Try installing both the libgd3
and libgd-devel
Cygwin packages and removing whatever parts of libgd is in /usr/local
. In particular, make sure which gdlib-config
points at /usr/bin/gdlib-config
.
来源:https://stackoverflow.com/questions/27679469/cpan-gd-module-install-failure-using-cygwin