Looks like your PKG_LIBS arguments are ignored/overwritten on the Mac build; 
‘bambi.so’ appears to be missing objects contained in -lbamdb, hence the load 
error.

Keith

> On Apr 30, 2018, at 6:48 AM, Evan Biederstedt <evan.biederst...@gmail.com> 
> wrote:
> 
> 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. 
> 
> 
> _______________________________________________
> Rcpp-devel mailing list
> Rcpp-devel@lists.r-forge.r-project.org
> https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel

_______________________________________________
Rcpp-devel mailing list
Rcpp-devel@lists.r-forge.r-project.org
https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel

Reply via email to