On 30 April 2018 at 06:48, Evan Biederstedt 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
Ok, so src/Makevars wants three libraries: PKG_LIBS= -lbamdb -llmdb -lhts | | 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 and here we get them as libbamdb.so, liblmdb.so, libhts.so are all system level libraries and (I guess) 'sudo ldconfig -p' shows them. Linking works, and they are found as the package loads. | 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 I think they should show up here too, but they do not. Are the libraries installed on the macOS box? Could you compile and link a trivial test program against them? Dirk | 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 -- http://dirk.eddelbuettel.com | @eddelbuettel | e...@debian.org _______________________________________________ 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