[Rd] looks in liblapack.a not liblapack.so

Charles Geyer charlie at stat.umn.edu
Sun Sep 18 00:19:02 CEST 2005


I can't compile R-alpha on AMD 64.  Rather than include a 1400 line script
I have put it on the web

    http://www.stat.umn.edu/~charlie/typescript.txt

way down near the bottom it fails building lapack.so

    gcc -shared -L/usr/local/lib64 -o lapack.so  Lapack.lo    -llapack -lblas -lg2c -lm -lgcc_s
    /usr/lib64/gcc-lib/x86_64-suse-linux/3.3.5/../../../../x86_64-suse-linux/bin/ld: /usr/lib64/gcc-lib/x86_64-suse-linux/3.3.5/../../../../lib64/liblapack.a(dgecon.i): relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC
    /usr/lib64/gcc-lib/x86_64-suse-linux/3.3.5/../../../../lib64/liblapack.a: could not read symbols: Bad value

The 'recompile with -fPIC' is bullsh*t.  The problem is that is is looking
in /usr/lib64/liblapack.a rather than /usr/lib64/liblapack.so.3 both of which
exist.  Some searching for this error message on Google shows a lot of
questions about this problem but no solution that I found other than

    rm /usr/lib64/liblapack.a

which I don't consider a solution.  It will link with the .so as the bottom
of the script shows

    snowbank$ cd src/modules/lapack
    snowbank$ gcc -shared -o lapack.so Lapack.lo -llapack -lblas -lg2c -lm -lgcc_s
    /usr/lib64/gcc-lib/x86_64-suse-linux/3.3.5/../../../../x86_64-suse-linux/bin/ld: /usr/lib64/gcc-lib/x86_64-suse-linux/3.3.5/../../../../lib64/liblapack.a(dgecon.i): relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC
    /usr/lib64/gcc-lib/x86_64-suse-linux/3.3.5/../../../../lib64/liblapack.a: could not read symbols: Bad value
    collect2: ld returned 1 exit status
    snowbank$ gcc -shared -o lapack.so Lapack.lo /usr/lib64/liblapack.so.3 -lblas -l g2c -lm -lgcc_s

No problems with the second link.

So what do I do?  liblapack.so is there.  I've linked other (non-R) programs
to it.  So it SHOULD work with R.

Either I can't read (possible) or the solution to this isn't in the gcc info
pages.

System (more info in typescript).

   AMD 64
   SuSE linux 9.3
   GCC 3.3.5

I also observed the same problem with R-2.1.1 but didn't get around to
debugging it until today.

It occurred to me that /usr/local/lib/liblapack.so.3 which is 32 bit
(because right now we are running only one R on both 32 and 64 bit and
that's where the 32 bit R finds it's shared libraries), but I don't
think that's the problem.  Well maybe it is.  How do I tell configure
NOT to add /user/local ?
-- 
Charles Geyer
Professor, School of Statistics
University of Minnesota
charlie at stat.umn.edu



More information about the R-devel mailing list