From edd at debian.org  Sun Nov 14 21:05:40 2010
From: edd at debian.org (Dirk Eddelbuettel)
Date: Sun, 14 Nov 2010 14:05:40 -0600
Subject: [Rd] LAPACK libraries improperly linked
In-Reply-To: <4CE024E4.6080904@cox.net>
References: <4CE024E4.6080904@cox.net>
Message-ID: <19680.16660.738153.875648@max.nulle.part>


On 14 November 2010 at 10:05, Ron Burns wrote:
| I am not sure if this is an R development problem or not. I am starting 
| with completely clean OS and and installing the latest version of R 
| without trying to anything special but I am having trouble with the 
| LAPACK library linking when I try to build packages that require them. 
| I thought perhaps my problem may be if interest here.
| 
| I just dumped Vista off a laptop formatted the disk and installed Ubuntu 
| 10.10 (latest release) as the single operating system. I did all of the 
| updates and then installed emacs and ess. Next I installed R by 
| following the the usual instructions on the CRAN site. At this point all 
| is working I am now in the process of installing the packages that I 
| normally have installed. I am having a problem with the LAPACK libraries 
| when installing lme4, but the problem is not unique to lme4. It is 
| either a link to or missing LAPACK libs. The libs seem to be installed 
| and there are links to them, but perhaps they are the wrong links. I am 
| at a loss as what I am doing wrong since I have started with a 
| completely clean machine and am not trying to anything special.
| 
| -------HERE is the R startup:
|   <wow> (ron) R
| 
| R version 2.12.0 (2010-10-15)
| Copyright (C) 2010 The R Foundation for Statistical Computing
| ISBN 3-900051-07-0
| Platform: i686-pc-linux-gnu (32-bit)
| 
| -------HERE is the final output from trying to install lme4:
| * installing *source* package lme4 ...
| ** libs
| gcc -I/usr/share/R/include   -I"/usr/lib/R/library/Matrix/include" 
| -I"/usr/lib/R/library/stats/include"   -fpic  -std=gnu99 -O3 -pipe  -g 
| -c init.c -o init.o
| gcc -I/usr/share/R/include   -I"/usr/lib/R/library/Matrix/include" 
| -I"/usr/lib/R/library/stats/include"   -fpic  -std=gnu99 -O3 -pipe  -g 
| -c lmer.c -o lmer.o
| gcc -I/usr/share/R/include   -I"/usr/lib/R/library/Matrix/include" 
| -I"/usr/lib/R/library/stats/include"   -fpic  -std=gnu99 -O3 -pipe  -g 
| -c local_stubs.c -o local_stubs.o
| gcc -shared -o lme4.so init.o lmer.o local_stubs.o -llapack -lf77blas 
| -latlas -lgfortran -lm -L/usr/lib/R/lib -lR
| /usr/bin/ld: cannot find -lf77blas
| /usr/bin/ld: cannot find -latlas
| collect2: ld returned 1 exit status
| make: *** [lme4.so] Error 1
| ERROR: compilation failed for package lme4
| * removing /usr/local/lib/R/site-library/lme4
| 
| ---------The
| /usr/bin/ld: cannot find -lf77blas
| /usr/bin/ld: cannot find -latlas
| errors are common to any other packages that use these libraries so it 
| not an lme4 package problem.
| 
| ---------BUT
| [ 48 ] <wow> (ron) /usr/bin/R CMD config LAPACK_LIBS
| -llapack
| 
| ---------AND
| <wow> (ron) dpkg -l | grep lapack
| ii  liblapack-dev                        3.2.1-8 
| library of linear algebra routines 3 - static version
| ii  liblapack3gf                         3.2.1-8 
| library of linear algebra routines 3 - shared version
| [ 44 ] <wow> (ron)
| 
| --------I did see a message indicating "Also do 'ldd 
| /usr/lib/R/bin/exec/R' and make sure you do _not_ have a depends on 
| Rlapack.so.  ....":
| 
| [ 47 ] <wow> (ron) ldd /usr/lib/R/bin/exec/R
|      linux-gate.so.1 =>  (0x00533000)
|      libR.so => /usr/lib/libR.so (0x0073e000)
|      libc.so.6 => /lib/libc.so.6 (0x00110000)
|      libf77blas.so.3gf => /usr/lib/libf77blas.so.3gf (0x00ed4000)
|      libatlas.so.3gf => /usr/lib/libatlas.so.3gf (0x0026e000)
|      libgfortran.so.3 => /usr/lib/libgfortran.so.3 (0x00cca000)
|      libm.so.6 => /lib/libm.so.6 (0x0065f000)
|      libreadline.so.6 => /lib/libreadline.so.6 (0x00534000)
|      libpcre.so.3 => /lib/libpcre.so.3 (0x00f5b000)
|      liblzma.so.2 => /usr/lib/liblzma.so.2 (0x00568000)
|      libz.so.1 => /lib/libz.so.1 (0x0058b000)
|      libdl.so.2 => /lib/libdl.so.2 (0x005a0000)
|      /lib/ld-linux.so.2 (0x00e67000)
|      libcblas.so.3gf => /usr/lib/libcblas.so.3gf (0x005a4000)
|      libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x005c4000)
|      libpthread.so.0 => /lib/libpthread.so.0 (0x005e0000)
|      libncurses.so.5 => /lib/libncurses.so.5 (0x005fa000)
| 
| [ 41 ] <wow> (ron) ls /usr/lib/libatlas*
| /usr/lib/libatlas.so.3gf@
| [ 42 ] <wow> (ron) ls /usr/lib/libf77blas*
| /usr/lib/libf77blas.so.3gf@
| 
| -------- so these are there and linked OK and there is no Rlapack.
| 
| I am at a loss as to where to go from here.

I think you were pretty close by looking at lapack-dev and blas-dev, but you
missed atlas-dev.  Simply do

    $ sudo apt-get install r-base-dev

to install the meta-package providing R-build dependencies and you should be
set. Substitute your favourite package management front-end for apt-get here.

A nice trick is to also check build-dependencies of existing packages. As you
struggled with lme4, you could compare against the recorded Build-Depends on
the r-cran-lme4 package I maintain:

    Build-Depends: debhelper (>= 7.0.0), cdbs, r-base-dev (>= 2.12.0), \
           r-cran-matrix (>= 0.999375-31), r-cran-lattice, r-cran-nlme

That's from the most recent package lme4-0.999375-37 which you may also find
built for Ubuntu thanks to the tireless work of Vincent and Michael who port
my Debian (core) packages for R to the CRAN repositories. See the README at

    http://cran.r-project.org/bin/linux/ubuntu/

If you need further assistance, feel free to come to r-sig-debian for Debian
and Ubuntu matters.

Hth, Dirk

| 
| Thank you all for your consideration.
|      Ron Burns
| 
| 
| 
| -- 
| R. R. Burns
| Physicist (Retired)
| Oceanside, CA
| 
| ______________________________________________
| R-devel at r-project.org mailing list
| https://stat.ethz.ch/mailman/listinfo/r-devel

-- 
Dirk Eddelbuettel | edd at debian.org | http://dirk.eddelbuettel.com



[Rd] LAPACK libraries improperly linked
Dirk Eddelbuettel