Guy: It looks like you are making progress! Your link step worked OK.
Whats in test.pl?
Regards,
Doug Hunt
[EMAIL PROTECTED]
Software Engineer III
UCAR - COSMIC, Tel. (303) 497-2611
---------- Forwarded message ----------
Date: Wed, 21 Feb 2007 17:16:55 -0600
From: "Phuong, Guy" <[EMAIL PROTECTED]>
To: Mark Pfeiffer <[EMAIL PROTECTED]>
Cc: [email protected]
Subject: RE: [Perldl] How to access my fortran library routines in PDL
Hi Mark
Thanks for the reply. I tried the line that you suggested but that doesn't
work. I then added the -fPIC switch to the Makefile.PL and that seems to of
worked giving me the output message as:
gcc -c
-I/usr/lib64/perl5/vendor_perl/5.8.5/x86_64-linux-thread-multi/PDL/Core
-D_REENTRANT -D_GNU_SOURCE -DDEBUGGING -fno-strict-aliasing -pipe
-I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
-I/usr/include/gdbm -O2 -g -pipe -m64 -DVERSION=\"0.1\"
-DXS_VERSION=\"0.1\" -fPIC
"-I/usr/lib64/perl5/5.8.5/x86_64-linux-thread-multi/CORE" Suma.c
gcc -c -o suma.o -g -fPIC suma.c
Running Mkbootstrap for PDL::Suma ()
chmod 644 Suma.bs
rm -f blib/arch/auto/PDL/Suma/Suma.so
gcc -shared Suma.o suma.o -o blib/arch/auto/PDL/Suma/Suma.so -lm
chmod 755 blib/arch/auto/PDL/Suma/Suma.so
cp Suma.bs blib/arch/auto/PDL/Suma/Suma.bs
chmod 644 blib/arch/auto/PDL/Suma/Suma.bs
Manifying blib/man3/PDL::Suma.3pm
After that I continued with the instructions and tried running the test.pl
file but now I'm getting another error.
[EMAIL PROTECTED] demo3]$ make test
PERL_DL_NONLAZY=1 /usr/bin/perl "-Iblib/lib" "-Iblib/arch" test.pl
1..1
Can't locate PDL/Suma.pm in @INC (@INC contains: blib/lib blib/arch
/usr/lib64/perl5/5.8.5/x86_64-linux-thread-multi /usr/lib/perl5/5.8.5
/usr/lib64/perl5/site_perl/5.8.5/x86_64-linux-thread-multi
/usr/lib64/perl5/site_perl/5.8.4/x86_64-linux-thread-multi
/usr/lib64/perl5/site_perl/5.8.3/x86_64-linux-thread-multi
/usr/lib64/perl5/site_perl/5.8.2/x86_64-linux-thread-multi
/usr/lib64/perl5/site_perl/5.8.1/x86_64-linux-thread-multi
/usr/lib64/perl5/site_perl/5.8.0/x86_64-linux-thread-multi
/usr/lib/perl5/site_perl/5.8.5 /usr/lib/perl5/site_perl/5.8.4
/usr/lib/perl5/site_perl/5.8.3 /usr/lib/perl5/site_perl/5.8.2
/usr/lib/perl5/site_perl/5.8.1 /usr/lib/perl5/site_perl/5.8.0
/usr/lib/perl5/site_perl
/usr/lib64/perl5/vendor_perl/5.8.5/x86_64-linux-thread-multi
/usr/lib64/perl5/vendor_perl/5.8.4/x86_64-linux-thread-multi
/usr/lib64/perl5/vendor_perl/5.8.3/x86_64-linux-thread-multi
/usr/lib64/perl5/vendor_perl/5.8.2/x86_64-linux-thread-multi
/usr/lib64/perl5/vendor_perl/5.8.1/x86_64-linux-thread-multi
/usr/lib64/perl5/vendor_perl/5.8.0/x86_64-linux-thread-multi
/usr/lib/perl5/vendor_perl/5.8.5 /usr/lib/perl5/vendor_perl/5.8.4
/usr/lib/perl5/vendor_perl/5.8.3 /usr/lib/perl5/vendor_perl/5.8.2
/usr/lib/perl5/vendor_perl/5.8.1 /usr/lib/perl5/vendor_perl/5.8.0
/usr/lib/perl5/vendor_perl .) at test.pl line 12.
BEGIN failed--compilation aborted at test.pl line 12.
not ok 1
make: *** [test_dynamic] Error 2
Any ideas on this one?
Regards
Guy
-----Original Message-----
From: Mark Pfeiffer [mailto:[EMAIL PROTECTED]
Sent: Wednesday, February 21, 2007 5:04 PM
To: Phuong, Guy
Cc: [email protected]
Subject: Re: [Perldl] How to access my fortran library routines in PDL
Hi Guy, just looking at the output and having not tried this.
It looks like you have a typo with your 'C' file. Put a new line at
the end.
And looks like you need -fPIC in your second compilation line. If you
do:
gcc -fPIC -shared Suma.o suma.o -o blib/arch/auto/PDL/Suma/
Suma.so -lm
immediately after the failure, does it work?
On 22/02/2007, at 8:27 AM, Phuong, Guy wrote:
Hello Xavier
Thank you so much for sending me that link. Everything seems a lot
more
clearer now and I think I understand how all the bits and pieces
work now.
I'll also be looking forward to your fortran cookbook as that is
primarily
what I'm trying to do.
I have run through your instructions step by step and when I get to
the part
when I type the command
Make (after perl Makefile.PL) I get an error message and I'm
forced to stop
here. The error message is as follows
/usr/bin/perl -I/usr/lib64/perl5/vendor_perl/5.8.5/x86_64-linux-
thread-multi
"-MPDL::PP qw/PDL::Suma PDL::Suma Suma/" Suma.pd
touch Suma.xs
/usr/bin/perl /usr/lib/perl5/5.8.5/ExtUtils/xsubpp -typemap
/usr/lib/perl5/5.8.5/ExtUtils/typemap -typemap
/usr/lib64/perl5/vendor_perl/5.8.5/x86_64-linux-thread-multi/PDL/
Core/typema
p.pdl Suma.xs > Suma.xsc && mv Suma.xsc Suma.c
gcc -c
-I/usr/lib64/perl5/vendor_perl/5.8.5/x86_64-linux-thread-multi/PDL/
Core
-D_REENTRANT -D_GNU_SOURCE -DDEBUGGING -fno-strict-aliasing -pipe
-I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
-I/usr/include/gdbm -O2 -g -pipe -m64 -DVERSION=\"0.1\"
-DXS_VERSION=\"0.1\" -fPIC
"-I/usr/lib64/perl5/5.8.5/x86_64-linux-thread-multi/CORE" Suma.c
gcc -c -o suma.o -g suma.c
suma.c:11:3: warning: no newline at end of file
Running Mkbootstrap for PDL::Suma ()
chmod 644 Suma.bs
rm -f blib/arch/auto/PDL/Suma/Suma.so
gcc -shared Suma.o suma.o -o blib/arch/auto/PDL/Suma/Suma.so -lm
/usr/bin/ld: suma.o: relocation R_X86_64_PC32 against
`cos@@GLIBC_2.2.5' can
not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: Bad value
collect2: ld returned 1 exit status
make: *** [blib/arch/auto/PDL/Suma/Suma.so] Error 1
I'm not exactly sure what the error is. Do you have any idea?
Your help is much appreciated,
Regards
Guy
-----Original Message-----
From: Xavier Calbet [mailto:[EMAIL PROTECTED]
Sent: Wednesday, February 21, 2007 5:03 AM
To: Vanuxem Grégory
Cc: Karl Glazebrook; Phuong, Guy; [EMAIL PROTECTED];
[email protected]
Subject: Re: [Perldl] How to access my fortran library routines in PDL
Hello Guy,
I have just made a document describing how to compile a C function
into PDL. Tomorrow, hopefully, I will do the same for a FORTRAN
function.
Have a look in
http://wiki.jach.hawaii.edu/pdl_wiki-bin/wiki/PDL_Cookbook
Cheers,
Xavier
On 2/21/07, Vanuxem Grégory <[EMAIL PROTECTED]> wrote:
Le mardi 20 février 2007 à 19:41 -0300, Karl Glazebrook a écrit :
On CallExt from perl have a look at callext.t in the PDL
distribution.
It is important to clarify whether you are having problems
building a
routine to use with CallExt or simply running it,
The other way to call C etc is using Inline::PP
Yes and here is a quickly hacked example (I call fortran here):
====================================================================
use PDL;
use Inline Pdlpp => Config =>
INC => "-I$ENV{HOME}/include",
LIBS => "-lm -lblas -lg2c",
#code to be included in the generated XS
AUTO_INCLUDE => <<'EOINC',
extern double dasum_(int *n, double *x, int *incx);
EOINC
;
use Inline Pdlpp;
$a = random(5);
print $a->sumover,"\n";
print $a->mydasum(),"\n";
__DATA__
__Pdlpp__
pp_def('mydasum',
Pars => 'x(n); [o] res()',
GenericTypes => [D],
Code =>
'
int inc = 1;
$res() = dasum_(&($SIZE(n)),$P(x),&inc);
');
======================================================================
=====
Apparently, on my distro (Debian), the html documentation of this
functionnality was not installed so I had to use 'man' (man
PDL::PP-Inline).
Greg
______________________________________________________________________
_____
Yahoo! Mail réinvente le mail ! Découvrez le nouveau Yahoo! Mail
et son
interface révolutionnaire.
http://fr.mail.yahoo.com
_______________________________________________
Perldl mailing list
[email protected]
http://mailman.jach.hawaii.edu/mailman/listinfo/perldl
cheers
Mark Pfeiffer
[EMAIL PROTECTED]
_______________________________________________
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