[Rcpp-devel] Rcpp question regarding compilation of another package
Dirk Eddelbuettel
edd at debian.org
Tue Dec 13 14:31:11 CET 2016
Thanks for posting here, and showing complete references. Your earlier
StackOverflow questions went nowhere. Hopefully we can tackle this here.
On 12 December 2016 at 17:32, khagay nagdimov wrote:
| I am trying to create a package that uses Rcpp to translate code from SeqLib (
| https://github.com/walaj/SeqLib) into R. I have compiled SeqLib but, I still
| have problems referencing the function definitions. The current structure of my
| R package is shown here: https://github.com/KhagayN/SeqLibr
A bit of a mess. The repo is full of object files (.o), editor backups (*~),
editor temp files (#*#). But at least you are using the right editor.
I have no experience with git submodules and cannot say wether SeqLib again
in SeqLibR is a good idea.
| My makevars links to the location of the header files and to the static
| libraries. To my understanding, the header files linked via PKG_CXXFLAGS point
| to the header files and PKG_LIBS points to the static libraries. Then, in
The Makevars is suspicious:
## the following flags are for PreProcessor.
PKG_CPPFLAGS= -I../bwa/ -I../ -I../src/SeqLib/*
First, the ../bwa/ directory does not work. R includes _everything below
inst/_ but only a few known directories at the top-level. This is why we all
put headers into inst/include/ --- so I would make **very strongly** suggest
you move bwa/ into inst/include/bwa and then use -I../inst/include/bwa.
Second, you are in src/ so ../src/ makes no sense. Make that -ISeqLib/
Third, there is no notion of wildcards in include directories. So -ISeqLib/
Fourth, for SeqLib you do
( cd SeqLib; ./configure; make; make install; )
and you _almost surely_ should not run 'make install'. The rest of your
src/Makevars is trying to use the static library from that directory; make
install would attempt to write the library somewhere else. "Writing R
Extensions* _explicitly_ prohibits that for good reason.
I stop here. Other failures related to loading object are likely due to
these issues which you probably want to correct first.
Dirk
| rcpp_hello_world.cpp, I reference a function called Open within the FastqReader
| class within the SeqLib namespace but, when I run load_all() I get an effor
| saying:
|
|
| Error in dyn.load(dllfile);
|
| unable to load shared object 'subsetSeqLib.so': undefined symbol:
| _ZN6SeqLib11FastqReader40OpenERKSs, which references that Open function from
| FastqReader. I don't understand why this is happening since I am linked to the
| static libraries that have the definition of that function.
|
|
| Thanks for all the help.
|
|
|
| _______________________________________________
| Rcpp-devel mailing list
| Rcpp-devel at lists.r-forge.r-project.org
| https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
--
http://dirk.eddelbuettel.com | @eddelbuettel | edd at debian.org
More information about the Rcpp-devel
mailing list