[Beowulf] recompile with -fPIC
Many of your questions may have already been answered in earlier discussions or in the FAQ. The search results page will indicate current discussions as well as past list serves, articles, and papers.
Paul Van Allsburg vanallsburg at hope.eduFri Aug 3 05:08:42 PDT 2007
- Previous message: [Beowulf] WD green harddrive, greenwashing?
- Next message: [Beowulf] Virtualization
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
I've been asked to port a Mandelbrot example written in c to perl - to prepare an exercise to get students familiar with the
ideas of writing parallel/distributed code. Perl is what the students will be learning in the course.
I have:
installed MPICH release (1.2.7p1) required by the Perl Parallel:MPI module
installed mpiexec-0.82 from OSC, required interface to PBS
compiled the mandelbrot c code with the MPICH mpicc wrapper and successfully ran it using PBS.
Next steps:
(fail) install the Parallel:MPI code & test,
begin porting the Mandelbrot example...
Im stuck at building the Parallel:MPI code, with a Position Independent Code error
http://www.gentoo.org/proj/en/base/amd64/howtos/index.xml?part=1&chap=3
Here is what happens-
$ make ( of perl module Parallel-MPI-0.03)
mpicc -c -I/usr/local/mpich/include -D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -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.03\"
-DXS_VERSION=\"0.03\" -fPIC "-I/usr/lib64/perl5/5.8.5/x86_64-linux-thread-multi/CORE" -DFLOAT_HACK MPI.c
Running Mkbootstrap for Parallel::MPI ()
chmod 644 MPI.bs
rm -f blib/arch/auto/Parallel/MPI/MPI.so
mpicc -shared MPI.o -o blib/arch/auto/Parallel/MPI/MPI.so
/usr/bin/ld: /usr/local/mpich/lib/libmpich.a(send.o): relocation R_X86_64_32 against `a local symbol' can not be used when
making a shared object; recompile with -fPIC
/usr/local/mpich/lib/libmpich.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
make: *** [blib/arch/auto/Parallel/MPI/MPI.so] Error 1
So I thought I could recover by rebuilding MPICH and add the fPIC flag:
./configure --with-device=ch_p4 --prefix=/usr/local/mpich -cflags=-fPIC
Unfortunately, is doesn't happen.
$ make ( of perl module Parallel-MPI-0.03)
cp MPI.pm blib/lib/Parallel/MPI.pm
AutoSplitting blib/lib/Parallel/MPI.pm (blib/lib/auto/Parallel/MPI)
/usr/bin/perl /usr/lib/perl5/5.8.5/ExtUtils/xsubpp -typemap /usr/lib/perl5/5.8.5/ExtUtils/typemap -typemap typemap MPI.xs >
MPI.xsc && mv MPI.xsc MPI.c
mpicc -c -I/usr/local/mpich/include -D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -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.03\"
-DXS_VERSION=\"0.03\" -fPIC "-I/usr/lib64/perl5/5.8.5/x86_64-linux-thread-multi/CORE" -DFLOAT_HACK MPI.c
Running Mkbootstrap for Parallel::MPI ()
chmod 644 MPI.bs
rm -f blib/arch/auto/Parallel/MPI/MPI.so
mpicc -shared MPI.o -o blib/arch/auto/Parallel/MPI/MPI.so
/usr/bin/ld: /usr/local/mpich/lib/libmpich.a(initfcmn.o): relocation R_X86_64_32 against `mpipriv_' can not be used when making
a shared object; recompile with -fPIC
/usr/local/mpich/lib/libmpich.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
make: *** [blib/arch/auto/Parallel/MPI/MPI.so] Error 1
What is the correct way to recompile with -fPIC or is there a deeper problem I don't recognize?
Thanks all,
Paul
--
Paul Van Allsburg
Hope College
Holland, Michigan 49423
616-395-7292
- Previous message: [Beowulf] WD green harddrive, greenwashing?
- Next message: [Beowulf] Virtualization
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Beowulf mailing list
