[Rcpp-devel] Installing RcppArmadillo under Ubuntu 10.10
bates at stat.wisc.edu
Tue Feb 8 22:49:37 CET 2011
On Tue, Feb 8, 2011 at 2:54 PM, Dirk Eddelbuettel <edd at debian.org> wrote:
> On 8 February 2011 at 14:39, Douglas Bates wrote:
> | On Tue, Feb 8, 2011 at 1:55 PM, Dirk Eddelbuettel <edd at debian.org> wrote:
> | > On 8 February 2011 at 13:42, Douglas Bates wrote:
> | > | I'm back to "it's not your night, kid". I seem to be unable to
> | > | install the RcppArmadillo package under Ubuntu 10.10 with R-2.12.1
> | > | installed from the packages on CRAN. The compilation goes fine but
> | > | the package can't be loaded because the symbol
> | > | arma::arma_version::major is undefined. It should have been defined
> | > | as a static unsigned int in
> | > | RcppArmadillo/inst/include/armadillo_bits/arma_version.hpp and is
> | > | indeed used in RcppArmadillo/src/RcppArmadillo.cpp. The output from
> | > | the attempted installation is enclosed.
> | > What does ldd say when you point at .so file that fails to load? Do you
> | > maybe have an old .deb package for Armadillo hanging around?
> | The ldd output is
> | linux-vdso.so.1 => (0x00007fffcddff000)
> | libRcpp.so => /home/bates/R/x86_64-pc-linux-gnu-library/2.12/Rcpp/lib/libRcpp.so
> | (0x00007fea656ee000)
> | liblapack.so.3gf => /usr/lib/liblapack.so.3gf (0x00007fea64ab8000)
> | libblas.so.3gf => /usr/lib/libblas.so.3gf (0x00007fea64573000)
> | libgfortran.so.3 => /usr/lib/libgfortran.so.3 (0x00007fea6428f000)
> | libR.so => /usr/lib/libR.so (0x00007fea63d30000)
> | libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007fea63a29000)
> | libm.so.6 => /lib/libm.so.6 (0x00007fea637a6000)
> | libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00007fea63590000)
> | libc.so.6 => /lib/libc.so.6 (0x00007fea6320c000)
> | libpthread.so.0 => /lib/libpthread.so.0 (0x00007fea62fef000)
> | libreadline.so.6 => /lib/libreadline.so.6 (0x00007fea62dae000)
> | libpcre.so.3 => /lib/libpcre.so.3 (0x00007fea62b7c000)
> | liblzma.so.2 => /usr/lib/liblzma.so.2 (0x00007fea6295a000)
> | libbz2.so.1.0 => /lib/libbz2.so.1.0 (0x00007fea62749000)
> | libz.so.1 => /lib/libz.so.1 (0x00007fea62530000)
> | libdl.so.2 => /lib/libdl.so.2 (0x00007fea6232c000)
> | /lib64/ld-linux-x86-64.so.2 (0x00007fea65b96000)
> | libncurses.so.5 => /lib/libncurses.so.5 (0x00007fea620e8000)
> | but armadillo shouldn't show up in ldd because it is only headers,
> Correct, brain fart on my part.
> | right? The output of nm -g applied to that shared object does list
> | the major, minor and patch members of the arma_version struct but has
> | them as undefined
> | U _ZN4arma12arma_version5majorE
> | U _ZN4arma12arma_version5minorE
> | U _ZN4arma12arma_version5patchE
> | I checked and I don't have any of the Ubuntu packages associated with
> | armadillo installed.
> | I really don't know what is going on.
> I don't have them!
> edd at max:~$ nm /usr/local/lib/R/site-library/RcppArmadillo/libs/RcppArmadillo.so | wc -l
> edd at max:~$ nm /usr/local/lib/R/site-library/RcppArmadillo/libs/RcppArmadillo.so | grep version
> 0000000000004ba0 T armadillo_version
> edd at max:~$
And I shouldn't have them either. What should happen during the
compilation is that RcppArmadillo.cpp includes RcppArmadillo.h, which
should be found in ../inst/include, which, in turn, includes
RcppArmadilloForward.h (also in ../inst/include) which includes
armadillo which includes armadillo_bits/arma_version.hpp which defines
the arma::arma_version struct with those static unsigned ints. I
don't know why that doesn't happen. If I add the -E flag to the
compiler call it does get included
# 113 "../inst/include/armadillo" 2
# 1 "../inst/include/armadillo_bits/arma_version.hpp" 1
# 26 "../inst/include/armadillo_bits/arma_version.hpp"
static const unsigned int major = 1;
static const unsigned int minor = 1;
static const unsigned int patch = 0;
const char* nickname = "Climate Vandal";
ss << arma_version::major
<< " ("
I guess my compiler just doesn't like me.
> Could you have an old file hanging around or something?
> Dirk Eddelbuettel | edd at debian.org | http://dirk.eddelbuettel.com
More information about the Rcpp-devel