OK, here we go for the stupid questions showing that I really don't understaind building well: I am building numpy on a Mandriva x86_64. I built an optimized ATLAS, and added the relevant lines to the site.cfg so that numpy does find the libraries. But now I get the following error at build: /usr/bin/ld: /volatile/varoquau/usr/lib//libptcblas.a(cblas_dptgemm.o): relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC /volatile/varoquau/usr/lib//libptcblas.a: could not read symbols: Bad value collect2: ld returned 1 exit status I must confess I really have no clue what this means, and how I solve this. Cheers, Gaël
Gael Varoquaux wrote: Hi Gael,
OK, here we go for the stupid questions showing that I really don't understaind building well:
I am building numpy on a Mandriva x86_64. I built an optimized ATLAS, and added the relevant lines to the site.cfg so that numpy does find the libraries. But now I get the following error at build:
/usr/bin/ld: /volatile/varoquau/usr/lib//libptcblas.a(cblas_dptgemm.o): relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC /volatile/varoquau/usr/lib//libptcblas.a: could not read symbols: Bad value collect2: ld returned 1 exit status
I must confess I really have no clue what this means, and how I solve this.
You need to build dynamic version of ATLAS or alternatively make ATLAS use -fPIC during compilation when building static libs. Note that AFAIK ATLAS 3.8.2's make install does not copy over the dynamic libs, but you should be easily be able to copy them over manually. The patch I am using is --- Make.top.orig 2009-01-01 19:20:21.000000000 -0800 +++ Make.top 2008-03-20 02:26:35.000000000 -0700 @@ -298,5 +298,11 @@ - chmod 0644 $(INSTdir)/libf77blas.a - cp $(LIBdir)/libptcblas.a $(INSTdir)/. - cp $(LIBdir)/libptf77blas.a $(INSTdir)/. + - cp $(LIBdir)/libatlas.so $(INSTdir)/. + - cp $(LIBdir)/libcblas.so $(INSTdir)/. + - cp $(LIBdir)/libf77blas.so $(INSTdir)/. + - cp $(LIBdir)/liblapack.so $(INSTdir)/. + - chmod 0644 $(INSTdir)/libatlas.so $(INSTdir)/liblapack.so \ + $(INSTdir)/libcblas.so $(INSTdir)/libcblas.so - chmod 0644 $(INSTdir)/libptcblas.a $(INSTdir)/libptf77blas.a but you would need to add the appropriate lines for the multi threaded libs, too. The install issue is fixed in ATLAS 3.9.x AFAIK.
Cheers,
Gaël
Cheers, Michael Cheers, Michael
_______________________________________________ Numpy-discussion mailing list Numpy-discussion@scipy.org http://projects.scipy.org/mailman/listinfo/numpy-discussion
On Thu, Jan 15, 2009 at 03:11:22AM -0800, Michael Abshoff wrote:
You need to build dynamic version of ATLAS or alternatively make ATLAS use -fPIC during compilation when building static libs. Note that AFAIK ATLAS 3.8.2's make install does not copy over the dynamic libs, but you should be easily be able to copy them over manually.
Of course. I was beeing brain dead. I did this last time, and this time I forgot. I had also forgetten to optimise lapack.... Doing things too quickly. Thanks, Gaël
participants (2)
-
Gael Varoquaux -
Michael Abshoff