[Rcpp-devel] Getting different build commands on Linux vs. Mac OS

Evan Biederstedt evan.biederstedt at gmail.com
Mon Apr 30 12:48:31 CEST 2018


Dear list

I have the following R package which is interacting with a C library via
Rcpp and extern. At some point, the goal is to combine these....but I'm
trying this with baby steps.

R package with C++ wrapper:
https://github.com/d-lo/bambi

The C library:
https://github.com/d-lo/bamdb

When I try to install the R package on Linux, the Makevars appears use the
compiler g++, and it installs correctly:


```
Installing package into '/home/username/R/x86_64-pc-linux-gnu-library/3.2'
(as 'lib' is unspecified)
* installing *source* package 'bambi' ...
** libs
g++ -std=c++11 -I/usr/share/R/include -DNDEBUG -I../inst/include/
-I"/usr/lib/R/site-library/Rcpp/include"   -fpic  -g -O2
-fstack-protector-strong -Wformat -Werror=format-security -Wdate-time
-D_FORTIFY_SOURCE=2 -g -c RcppExports.cpp -o RcppExports.o
g++ -std=c++11 -I/usr/share/R/include -DNDEBUG -I../inst/include/
-I"/usr/lib/R/site-library/Rcpp/include"   -fpic  -g -O2
-fstack-protector-strong -Wformat -Werror=format-security -Wdate-time
-D_FORTIFY_SOURCE=2 -g -c bambi.cpp -o bambi.o
g++ -std=c++11 -shared -L/usr/lib/R/lib -Wl,-Bsymbolic-functions
-Wl,-z,relro -o bambi.so RcppExports.o bambi.o -lbamdb -llmdb -lhts
-L/usr/lib/R/lib -lR
installing to /home/username/R/x86_64-pc-linux-gnu-library/3.2/bambi/libs
** R
** preparing package for lazy loading
** help
*** installing help indices
** building package indices
** testing if installed package can be loaded
* DONE (bambi)
> library(bambi)
```

Here's what I see when I do the same on Mac OS. It uses clang++, and has
entirely different build commands:

```

* installing to library
‘/Library/Frameworks/R.framework/Versions/3.4/Resources/library’

* installing *source* package ‘bambi’ ...

** libs

clang++  -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG
-I"/Library/Frameworks/R.framework/Versions/3.4/Resources/library/Rcpp/include"
-I/usr/local/include   -fPIC  -Wall -g -O2  -c RcppExports.cpp -o
RcppExports.o

clang++  -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG
-I"/Library/Frameworks/R.framework/Versions/3.4/Resources/library/Rcpp/include"
-I/usr/local/include   -fPIC  -Wall -g -O2  -c bambi.cpp -o bambi.o

clang++  -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG
-I"/Library/Frameworks/R.framework/Versions/3.4/Resources/library/Rcpp/include"
-I/usr/local/include   -fPIC  -Wall -g -O2  -c rcpp_hello_world.cpp -o
rcpp_hello_world.o

clang++ -dynamiclib -Wl,-headerpad_max_install_names -undefined
dynamic_lookup -single_module -multiply_defined suppress
-L/Library/Frameworks/R.framework/Resources/lib -L/usr/local/lib -o
bambi.so RcppExports.o bambi.o rcpp_hello_world.o
-F/Library/Frameworks/R.framework/.. -framework R -Wl,-framework
-Wl,CoreFoundation

installing to
/Library/Frameworks/R.framework/Versions/3.4/Resources/library/bambi/libs

** R

** preparing package for lazy loading

** help

*** installing help indices

** building package indices

** testing if installed package can be loaded

Error: package or namespace load failed for ‘bambi’ in dyn.load(file,
DLLpath = DLLpath, ...):

 unable to load shared object
'/Library/Frameworks/R.framework/Versions/3.4/Resources/library/bambi/libs/bambi.so':

  dlopen(/Library/Frameworks/R.framework/Versions/3.4/Resources/library/bambi/libs/bambi.so,
6): Symbol not found: _get_bam_rows

  Referenced from:
/Library/Frameworks/R.framework/Versions/3.4/Resources/library/bambi/libs/bambi.so

  Expected in: flat namespace

 in
/Library/Frameworks/R.framework/Versions/3.4/Resources/library/bambi/libs/bambi.so

Error: loading failed

Execution halted

ERROR: loading failed

* removing
‘/Library/Frameworks/R.framework/Versions/3.4/Resources/library/bambi’

```

Why is there this discrepancy? How do I direct the Makevars to use g++ and
give me the "correct" build as I see on Linux? `CXX=g++` or
`CXX=/usr/local/bin/g++` doesn't appear to work.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.r-forge.r-project.org/pipermail/rcpp-devel/attachments/20180430/55578641/attachment.html>


More information about the Rcpp-devel mailing list