[Rcpp-devel] RInside under Windows
Patrick Burns
patrick at burns-stat.com
Tue Feb 14 21:47:21 CET 2012
On 14/02/2012 20:14, Dirk Eddelbuettel wrote:
>
> On 14 February 2012 at 20:04, Patrick Burns wrote:
> | Obviously I don't *really* know what I'm
> | doing, or even *sort of* know what I'm
> | doing. But that never stopped me before.
> |
> | Here is hopefully enough breadcrumbs to
> | help someone, or even all of us.
> |
> |
> | I've reinstalled RInside so that I am
> | starting with the original Makefile.win
> |
> | *) There is an extraneous "n" on the first
> | line (first character) of Makefile.win -- 'make'
> | doesn't like that.
>
> I don't know for sure what your are talking about. A common fix would be to
> send a diff. Could you do that?
This is Windows, remember -- perhaps there is a
way of doing a diff, I don't know it. But the
start of Makefile.win that I see out of the box is:
n## -*- mode: makefile; tab-width: 8; -*-
##
## Simple Makefile for Windows
Note the bizarre first character.
>
> | *) I need to comment out the command setting
> | R_HOME and set it in DOS instead.
>
> Works for me in the Makefile.win
>
> | *) The next problem is two instances each of:
> |
> | there is no package called [Rcpp, RInside]
> |
> | This is because .libPaths() is only finding
> | the main library and not the one where the
> | installed packages go.
> |
> | This is diagnosed by adding a line to Makefile.win:
> |
> | Rlibpaths := $(shell echo '.libPaths()' | $(R_HOME)/bin/R $(R_ARCH)
> | --vanilla --slave)
>
> I would recommend using ~/.Rprofile which strikes me as easier.
>
> | Adding a line to the checkR task:
> |
> | echo $(Rlibpaths)
> |
> | And then doing:
> |
> | make checkR -f Makefile.win
> |
> | This is the same in 32-bit and 64-bit.
> |
> | This problem can be remedied by setting the
> | R_LIBS_USER environment variable. You can
> | see what that is with the R command:
> |
> | Sys.getenv('R_LIBS_USER')
> |
> |
> | *) Now there is some progress, but not much.
> |
> | It compiles:
> | rinside_callbacks0
> | rinside_module_sample0
> | rinside_sample0
>
> Can you run rinside_sample0.exe ?
>
> | And gets an error on rinside_sample1:
> |
> | reopening rinside_sample1.exe: Permission denied
>
> Huh?
Agreed. That is the only indication of it
being upset.
But I renamed that file to try to make it do it last.
Running it again there was no error -- everything
compiled.
Compiled for 32-bit.
There is not an x64 subdirectory to 'lib' (as there is
with 'libs') so nothing compiles.
>
> | However the three that did compile don't run. They
> | all have the error message:
> |
> | The program can't start because R.dll is missing from
> | your computer. Try reinstalling the program to fix
> | this problem.
>
> Could that be a Win7 security setting or something like it?
That's an interesting idea. Anyone have
ideas about testing it?
Pat
>
> | This is using Rtools2.14 and R 2.14.1 with
> | RInside_0.2.6 Rcpp_0.9.9
>
> I think I used the same combination with success.
>
> Dirk
>
>
> | Pat
> |
> | On 14/02/2012 17:53, Dirk Eddelbuettel wrote:
> |>
> |> Hi Pat,
> |>
> |> On 14 February 2012 at 17:43, Patrick Burns wrote:
> |> | Good point about the Rtools version. I started
> |> | with 2.13, but I get the same thing with 2.14.
> |> |
> |> | Here are the key changes that I made to Makefile.win:
> |> |
> |> | RCPPINCL := -IC:/Users/pat/Documents/R/win-library/2.14/Rcpp/include
> |> | RCPPLIBS :=
> |> | C:/Users/pat/Documents/R/win-library/2.14/Rcpp/libs/i386/Rcpp.dll
> |> |
> |> | RINSIDEINCL := -IC:/Users/pat/Documents/R/win-library/2.14/RInside/include
> |> | RINSIDELIBS :=
> |> | C:/Users/pat/Documents/R/win-library/2.14/RInside/libs/i386/libRInside.dll
> |>
> |> That's not quite right, is it? What do (quoting from examples/standard/Makefile.win)
> |> these do:
> |>
> |> ## include headers and libraries for RInside embedding classes
> |> RINSIDEINCL := $(shell echo 'RInside:::CxxFlags()' | $(R_HOME)/bin/R $(R_ARCH) --vanilla --slave)
> |> RINSIDELIBS := $(shell echo 'RInside:::LdFlags()' | $(R_HOME)/bin/R $(R_ARCH) --vanilla --slave)
> |>
> |> | I then do:
> |> |
> |> | make -f Makefile.win
> |> |
> |> | I seem to have failed in my attempt to
> |> | tell it where R lives -- I get a cygwin
> |> | warning about MS-DOS style path, but I
> |> | don't think that is really a problem.
> |>
> |> R_HOME must be defined. You can get it from R, or hardcode it.
> |>
> |> The single best start is to try
> |>
> |> cd examples/standard
> |> make -f Makefile.win
> |>
> |> which should create 10+ executable. And you can borrow freely from that
> |> Makefile.win which should work.
> |>
> |> Lastly, the Cygwin thing is line noise which you can suppress by setting an
> |> env var appropriately. This comes from the newer Rtools.
> |>
> |> | It then attempts the g++ command, gives
> |> | the multiple definition statements, and:
> |>
> |> Linking is still wrong then.
> |>
> |> Dirk
> |>
> |>
> |
> | --
> | Patrick Burns
> | patrick at burns-stat.com
> | http://www.burns-stat.com
> | http://www.portfolioprobe.com/blog
> | twitter: @portfolioprobe
>
--
Patrick Burns
patrick at burns-stat.com
http://www.burns-stat.com
http://www.portfolioprobe.com/blog
twitter: @portfolioprobe
More information about the Rcpp-devel
mailing list