Hi all,

I tried SO for this, but got no response. Trying here in hope of better luck.

----------------------------------------------------------------------------------------------------------

I am trying to build an R package that uses some C code. I have a C library 
that is compiled into an executable, that can be called from the command line. 
There is a Makefile associated with it. 

I am trying to grok the information [here][1], where it says

> If you want to create and then link to a library, say using code in a
> subdirectory, use something like

     .PHONY: all mylibs
     
     all: $(SHLIB)
     $(SHLIB): mylibs
     
     mylibs:
             (cd subdir; make) 

> Be careful to create all the necessary dependencies, as there is a no
> guarantee that the dependencies of all
> will be run in a particular order (and some of the CRAN build machines
> use multiple CPUs and parallel makes).



If I create a new subdirectory of the `src` folder in my package, called 
`someLibrary`, with the code and Makefile unchanged, and in turn, in the 
original `Makevars` file for my package I add the above code unchanged, then I 
will be able to build that shared library to be exported using `useDynLib`?

----
Edit 1:
----
Following information [here][2], I changed the `Makefile` to create a shared 
library by adding 

    CFLAG = -fPIC -g -O3 
    LDFLAGS= -shared

However, this leads to the problem that the `.so` file is not exported directly 
to the `libs` directory of the package. If I hard code the path into the 
target, then the file is sent to the `libs` directory of the package (this is 
all by the way of calls to `R CMD INSTALL myPackage`). 

----
Edit 2:
----
Lastly, I would like to know how to make calls to the shared library, given 
that it has a `main()` method that I could call from the command line 
executable.

What is the procedure to expose this to the R `NAMESPACE`, so that it can be 
called via `.Call`?

PS.  Please let me know if I should make the last bit a separate question.

  [1]: http://cran.r-project.org/doc/manuals/R-exts.html#Using-Makevars
  [2]: 
http://stackoverflow.com/questions/8096015/creating-a-simple-make-file-to-create-a-shared-library-whats-wrong-with-this-m

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to