[Rcpp-devel] Compilation and Build Error with R CMD SHLIB and R CMD check

Jared Lander info at jaredlander.com
Fri Jan 20 21:57:43 CET 2012


Replies are inline.

On Thu, Jan 19, 2012 at 2:31 PM, Dirk Eddelbuettel <edd at debian.org> wrote:

>
> Jared,
>
> Welcome to the list.
>
> On 19 January 2012 at 13:54, Jared Lander wrote:
> | After checking the archives of this mail list I have still not found my
> | problem, but please excuse me if I am repeating anything already solved.
> |
> |
> |
> | I can use R CMD SHLIB to compile files such as those in the Rcpp master
> class
> | examples part1 up to and including modEx2.cpp.  But I am unable to
> compile
> | other files such as those created by Rcpp.package.skeleton("mypackage").
>
> You do understand that Rcpp.package.skeleton() output is meant to be used
> as
> a /package/ so you should think in terms of R CMD INSTALL.
>
> Also, Rcpp is used by 50+ packages on CRAN.  You can always look at some of
> those in terms of setup and tricks.
>
> Lastly, the very question 'how do I use "R CMD SHLIB"' has its own entry in
> the Rcpp-FAQ vignette.
>
I get that package skeleton is meant for R CMD INSTALL.  But while testing
individual files I use R CMD SHLIB, which depending on the directory I am
calling it from sometimes works and sometimes doesn't.  And this isn't a
path issue as I the problem occurs based on how deep in subdirectories I go.


>
> |
> | Running "R CMD SHLIB rcpp_hello_world.cpp" results in the error below
> (sorry
> | for the long message):
> |
> | x86_64-w64-mingw32-g++  -I"c:/Users/Jared/Documents/R/R-2.14.1/include"
> -IC:/
> | Users/Jared/Documents/R/win-library/2.14/Rc
> | pp/include    -I"d:/RCompile/CRANpkg/extralibs64/local/include"     -O2
> | -Wall  -mtune=core2 -c rcpp_hello_world.cpp -o r
> | cpp_hello_world.o
> | "The filename, directory name, or volume label syntax is incorrect."
>
> Never seen this "The filename, directory name, or volume label syntax is
> incorrect."
> Where does it come from?
>
 No clue where that is coming from.  That's the error given when trying to
run R CMD SHLIB.

>
> | The filename, directory name, or volume label syntax is incorrect.
> | The filename, directory name, or volume label syntax is incorrect.
> | The filename, directory name, or volume label syntax is incorrect.
> | The filename, directory name, or volume label syntax is incorrect.
> | The filename, directory name, or volume label syntax is incorrect.
> | x86_64-w64-mingw32-g++ -shared -s -static-libgcc -o rcpp_hello_world.dll
> | tmp.def rcpp_hello_world.o -Ld:/RCompile/CRANpk
> | g/extralibs64/local/lib/x64 -Ld:/RCompile/CRANpkg/extralibs64/local/lib
> -Lc:/
> | Users/Jared/Documents/R/R-2.14.1/bin/x64 -l
> | R
> | rcpp_hello_world.o:rcpp_hello_world.cpp:(.text+0xd7): undefined
> reference to
> | `Rcpp::RObject::setSEXP(SEXPREC*)'
>
> The linker tells you it doesn't find the Rcpp library.
>
What could be causing that?  I did export PKG_LIBS=`Rscript -e
"RCPP:::LdFlags()"` and export PKG_CXXFLAGS=`Rscript -e
"Rcpp:::CxxFlags()"`.

>
> | rcpp_hello_world.o:rcpp_hello_world.cpp:(.text+0xe4): undefined
> reference to
> | `void Rcpp::internal::r_init_vector<16>(SEX
> | PREC*)'
> | rcpp_hello_world.o:rcpp_hello_world.cpp:(.text+0x23e): undefined
> reference to
> | `Rcpp::RObject::setSEXP(SEXPREC*)'
> | rcpp_hello_world.o:rcpp_hello_world.cpp:(.text+0x2bc): undefined
> reference to
> | `Rcpp::RObject::setSEXP(SEXPREC*)'
> | rcpp_hello_world.o:rcpp_hello_world.cpp:(.text+0x2c9): undefined
> reference to
> | `void Rcpp::internal::r_init_vector<19>(SE
> | XPREC*)'
> | rcpp_hello_world.o:rcpp_hello_world.cpp:(.text+0x33d): undefined
> reference to
> | `Rcpp::RObject::~RObject()'
> | rcpp_hello_world.o:rcpp_hello_world.cpp:(.text+0x361): undefined
> reference to
> | `Rcpp::RObject::~RObject()'
> | rcpp_hello_world.o:rcpp_hello_world.cpp:(.text+0x385): undefined
> reference to
> | `Rcpp::RObject::~RObject()'
> | rcpp_hello_world.o:rcpp_hello_world.cpp:(.text+0x44f): undefined
> reference to
> | `Rcpp::RObject::~RObject()'
> | rcpp_hello_world.o:rcpp_hello_world.cpp:(.text+0x47d): undefined
> reference to
> | `Rcpp::RObject::~RObject()'
> | rcpp_hello_world.o:rcpp_hello_world.cpp:(.text+0x4ab): more undefined
> | references to `Rcpp::RObject::~RObject()' follow
> |
> rcpp_hello_world.o:rcpp_hello_world.cpp:(.text$_ZN4Rcpp6VectorILi14EE6updateEv
> | [Rcpp::Vector<14>::update()]+0xd): undefin
> | ed reference to `double* Rcpp::internal::r_vector_start<14,
> double>(SEXPREC*)'
> | rcpp_hello_world.o:rcpp_hello_world.cpp:
> | (.text$_ZN4Rcpp8internal13r_init_vectorILi14EEEvP7SEXPREC[void
> | Rcpp::internal::r
> | _init_vector<14>(SEXPREC*)]+0xa): undefined reference to `double*
> | Rcpp::internal::r_vector_start<14, double>(SEXPREC*)'
> | collect2: ld returned 1 exit status
> |
> |
> |
> | Similarly, running R CMD check mypackage yields the following error file:
> |
> | * installing *source* package 'mypackage' ...
> | ** libs
> |
> | *** arch - i386
> | g++ -shared -s -static-libgcc -o mypackage.dll tmp.def
> rcpp_hello_world.o -Ld:/
> | RCompile/CRANpkg/extralibs/local/lib/i386
> -Ld:/RCompile/CRANpkg/extralibs/local
> | /lib C:/Users/Jared/Documents/R/win-library/2.14/Rcpp/lib/i386/libRcpp.a
> -Lc:/
> | Users/Jared/DOCUME~1/R/R-214~1.1/bin/i386 -lR
> |
> c:/rtools/gcc-4.5.4/bin64/../lib/gcc/x86_64-w64-mingw32/4.5.4/../../../../
> | x86_64-w64-mingw32/bin/ld.exe: skipping incompatible
> c:/Users/Jared/DOCUME~1/R/
> | R-214~1.1/bin/i386/R.dll when searching for -lR
> |
> c:/rtools/gcc-4.5.4/bin64/../lib/gcc/x86_64-w64-mingw32/4.5.4/../../../../
> | x86_64-w64-mingw32/bin/ld.exe: skipping incompatible
> c:/Users/Jared/DOCUME~1/R/
> | R-214~1.1/bin/i386/R.dll when searching for -lR
> |
> c:/rtools/gcc-4.5.4/bin64/../lib/gcc/x86_64-w64-mingw32/4.5.4/../../../../
> | x86_64-w64-mingw32/bin/ld.exe: cannot find -lR
> | collect2: ld returned 1 exit status
> | ERROR: compilation failed for package 'mypackage'
> | * removing 'c:/Users/Jared/mypackage.Rcheck/mypackage'
> |
> |
> | I am running Windows 7, R 2.14.1, with RTools and gcc-4.5.4, with all the
> | apropriate programs in the path.
>
> Just a few weeks ago, I re-setup all that on two Windows computers. It does
> work for me, CRAN, win-builder and a number of users.
>
> The first test always is 'R CMD INSTALL somePackage_1.2-3.tar.gz'.  You
> could
> try with RcpoArmadillo or something even smaller.
>
> You can also create a source archive and submit it to win-builder yourself
> to
> check whether it is your sources, or your compiler setup. See
> http://win-builder.r-project.org for more.
>
I will try again with another package and try on a Mac I have to see if
that helps me out.

Thanks for the help.

>
> Dirk
>
> | Thank you for any insight you can provide.
> |
> | Jared
> |
> | ----------------------------------------------------------------------
> | _______________________________________________
> | 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
> --
> "Outside of a dog, a book is a man's best friend. Inside of a dog, it is
> too
> dark to read." -- Groucho Marx
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.r-forge.r-project.org/pipermail/rcpp-devel/attachments/20120120/ba795b5b/attachment.htm>


More information about the Rcpp-devel mailing list