Hi,

The problem is that you are running on a 64-bit system, but the pgplot fortran 
& c library (not the Perl module) was not compiled in the correct way, which 
makes linking with that library from the Perl PGPLOT module problematic.  The 
pgplot library needs to be recompiled with the -fPIC option (both for libpgplot 
and the libcpgplot).  This might require editing the Makefile.  Then try 
installing the perl PGPLOT module again.

Did you install the pgplot library from a package manager, or did you compile 
it yourself?  If from a package manager, what version of CentOS are you 
running?  We have not seen an error like this on the mailing list in awhile, so 
I thought most of those distributions had figured it out!

The last time I remember seeing something like this was in 2008, you can read 
about it in several threads called "installing pgplot in ubuntu" here: 
http://mailman.jach.hawaii.edu/pipermail/perldl/2008-June/thread.html

There are several issues with PGPLOT on 64-bit systems:
1) the -fPIC issue;
2) the fact that some pgplot drivers (/(V)GIF, /(V)PPM, and /(V)WD) need the 
source code edited for 64-bit systems before you compile pgplot;
3) that sometimes the linker doesn't know where to find libpgplot (if it is in 
say /usr/local/pgplot), and so you have to add that location to your 
"/etc/ld.so.conf" and then run "ldconfig".

Do you have a reason to need PGPLOT?  We are trying to move people towards some 
nicer, more modern graphics systems that interface nicely with PDL, and I would 
go that route if you don't have any specific reason for needing PGPLOT.

best,
Derek

On Mar 27, 2013, at 11:01 PM, 一点 wrote:

> I'm trying to install PGPLOT using cpan> install PGPLOT, but it is not 
> working.
> the transcript of the session is posted blow.
> I'm using perl 5.8.8 on Centos.
> 
> cpan[1]> install PGPLOT
> Reading '/root/.cpan/Metadata'
>   Database was generated on Sun, 24 Mar 2013 17:29:02 GMT
> Fetching with LWP:
> ftp://ftp.cuhk.edu.hk/pub/packages/perl/CPAN/authors/01mailrc.txt.gz
> Reading '/root/.cpan/sources/authors/01mailrc.txt.gz'
> ............................................................................DONE
> Fetching with LWP:
> ftp://ftp.cuhk.edu.hk/pub/packages/perl/CPAN/modules/02packages.details.txt.gz
> Reading '/root/.cpan/sources/modules/02packages.details.txt.gz'
>   Database was generated on Wed, 27 Mar 2013 17:29:02 GMT
> ............................................................................DONE
> Fetching with LWP:
> ftp://ftp.cuhk.edu.hk/pub/packages/perl/CPAN/modules/03modlist.data.gz
> Reading '/root/.cpan/sources/modules/03modlist.data.gz'
> ............................................................................DONE
> Writing /root/.cpan/Metadata
> Running install for module 'PGPLOT'
> Running make for K/KG/KGB/PGPLOT-2.21.tar.gz
> Checksum for /root/.cpan/sources/authors/id/K/KG/KGB/PGPLOT-2.21.tar.gz ok
> Scanning cache /root/.cpan/build for sizes
> ...................................................................---------DONE
> DEL(1/3): /root/.cpan/build/Compress-Raw-Bzip2-2.060 
> DEL(2/3): /root/.cpan/build/Locale-Maketext-Simple-0.21 
> DEL(3/3): /root/.cpan/build/Module-Load-0.24 
> /bin/tar: Read 1536 bytes from -
> 
>   CPAN.pm: Building K/KG/KGB/PGPLOT-2.21.tar.gz
> 
> 
> ExtUtils::F77: Version 1.17
> Loaded ExtUtils::F77 version 1.17
> Found compiler g77
> ExtUtils::F77: Using system=Linux compiler=GNU
> Runtime: -L/usr/lib/gcc/x86_64-redhat-linux/3.4.6 -L/usr/lib -lg2c -lm
> ExtUtils::F77: Validating -L/usr/lib/gcc/x86_64-redhat-linux/3.4.6 -L/usr/lib 
> -lg2c -lm   [ok]
> ExtUtils::F77: Compiler: g77
> ExtUtils::F77: Cflags:  
> Checking if your kit is complete...
> Looks good
> Writing Makefile for PGPLOT
> Writing MYMETA.yml and MYMETA.json
> cp PGPLOT.pm blib/lib/PGPLOT.pm
> /usr/bin/perl /usr/lib/perl5/5.8.8/ExtUtils/xsubpp  -typemap 
> /usr/lib/perl5/5.8.8/ExtUtils/typemap -
> 
> typemap typemap  PGPLOT.xs > PGPLOT.xsc && mv PGPLOT.xsc PGPLOT.c
> Please specify prototyping behavior for PGPLOT.xs (see perlxs manual)
> gcc -c  -I/usr/local/pgplot -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing 
> -pipe -Wdeclaration-
> 
> after-statement -I/usr/local/include -D_LARGEFILE_SOURCE 
> -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -
> 
> O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector 
> --param=ssp-buffer-size=4 -
> 
> m64 -mtune=generic   -DVERSION=\"2.21\" -DXS_VERSION=\"2.21\" -fPIC 
> "-I/usr/lib64/perl5/5.8.8/x86_64-
> 
> linux-thread-multi/CORE"   PGPLOT.c
> In file included from PGPLOT.xs:16:
> pgfun.c:47: warning: return type defaults to ‘int’
> pgfun.c:53: warning: return type defaults to ‘int’
> pgfun.c:60: warning: return type defaults to ‘int’
> pgfun.c:67: warning: return type defaults to ‘int’
> pgfun.c: In function ‘pgfunplot’:
> pgfun.c:168: warning: unused variable ‘retval’
> In file included from PGPLOT.xs:18:
> arrays.c: In function ‘pack_element’:
> arrays.c:487: warning: label ‘errexit’ defined but not used
> arrays.c: In function ‘unpack1D’:
> arrays.c:517: warning: unused variable ‘work’
> PGPLOT.c: In function ‘cpgconx’:
> pgfun.c:70: warning: control reaches end of non-void function
> PGPLOT.c: In function ‘cpgfunt’:
> pgfun.c:63: warning: control reaches end of non-void function
> PGPLOT.c: In function ‘cpgfuny’:
> pgfun.c:56: warning: control reaches end of non-void function
> PGPLOT.c: In function ‘cpgfunx’:
> pgfun.c:50: warning: control reaches end of non-void function
> PGPLOT.c: At top level:
> /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/CORE/patchlevel.h:122: 
> warning: ‘local_patches’ 
> 
> defined but not used
> arrays.c: In function ‘unpack1D’:
> arrays.c:512: warning: ‘ivar’ may be used uninitialized in this function
> arrays.c:516: warning: ‘uvar’ may be used uninitialized in this function
> arrays.c:514: warning: ‘dvar’ may be used uninitialized in this function
> arrays.c:513: warning: ‘fvar’ may be used uninitialized in this function
> arrays.c:515: warning: ‘svar’ may be used uninitialized in this function
> arrays.c: In function ‘pack2D’:
> arrays.c:249: warning: ‘nval’ may be used uninitialized in this function
> arrays.c:245: warning: ‘array2’ may be used uninitialized in this function
> Running Mkbootstrap for PGPLOT ()
> chmod 644 PGPLOT.bs
> rm -f blib/arch/auto/PGPLOT/PGPLOT.so
> LD_RUN_PATH="/usr/lib64:/usr/lib/gcc/x86_64-redhat-linux/3.4.6" gcc  -shared 
> -O2 -g -pipe -Wall -Wp,-
> 
> D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 
> -m64 -mtune=generic 
> 
> PGPLOT.o  -o blib/arch/auto/PGPLOT/PGPLOT.so       \
>            -L/usr/local/pgplot -L/usr/local/lib -lcpgplot -lpgplot -lX11 
> -lpng -L/usr/lib/gcc/x86_64-
> 
> redhat-linux/3.4.6 -L/usr/lib -lg2c -lm    \
>           
> /usr/bin/ld: /usr/local/pgplot/libpgplot.a(grexec.o): relocation R_X86_64_32S 
> against `a local symbol' 
> 
> can not be used when making a shared object; recompile with -fPIC
> /usr/local/pgplot/libpgplot.a: could not read symbols: Bad value
> collect2: ld returned 1 exit status
> make: *** [blib/arch/auto/PGPLOT/PGPLOT.so] Error 1
>   KGB/PGPLOT-2.21.tar.gz
>   /usr/bin/make -- NOT OK
> Running make test
>   Can't test without successful make
> Running make install
>   Make had returned bad status, install seems impossible
> Failed during this command:
>  KGB/PGPLOT-2.21.tar.gz                       : make NO
> 
> 
> Any help will be appreciated.
> Thank you
> _______________________________________________
> Perldl mailing list
> [email protected]
> http://mailman.jach.hawaii.edu/mailman/listinfo/perldl


_______________________________________________
Perldl mailing list
[email protected]
http://mailman.jach.hawaii.edu/mailman/listinfo/perldl

Reply via email to