[Rcpp-devel] Cannot run rcpp due to missing include file(s)

Kevin Ushey kevinushey at gmail.com
Sun May 3 21:50:43 CEST 2020


> In file included from /usr/local/include/math.h:8:

The problem here is you have a bunch of headers in /usr/local/include
that are shadowing / overriding the "normal" system header files;
/usr/local/include/math.h being one of these (but I imagine there's
more).

To work around this, you'll have to explicitly remove the
-I/usr/local/include bit that's part of CPPFLAGS (normally set by
default by an R installation), or clean up your /usr/local/include
directory. For example, in ~/.R/Makevars, you could set:

    CPPFLAGS = -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk

See the Makeconf file at:

    /Library/Frameworks/R.framework/Resources/etc/Makeconf

for more information on where the default values for compilation flags
come from.

Note that setting the above will probably break compilation for other
packages that depend on headers being located in /usr/local/include;
if that is indeed the case your main recourse would be to clean up
/usr/local/include, or find a way to explicitly include your system
headers before /usr/local/include.

As an aside, the Makevars variables prefixed with PKG_ are normally
reserved for use by package authors (in their own src/Makevars); you
normally shouldn't try to set or override those. See in R-exts:

https://cran.r-project.org/doc/manuals/r-release/R-exts.html#Using-Makevars

for more details.

Best,
Kevin

On Sun, May 3, 2020 at 10:17 AM Paul Fishwick <metaphorz at gmail.com> wrote:
>
> It was a good suggestion. I went back to installing R 4.0 as you suggested. In Rstudio, which I think
>
> uses whatever R happens to be currently installed, I get into
>
> a similar rcpp issue whenever I say “y” to compiling packages from source. There seems
>
> to be consistent disconnect of R finding certain files when compilation with
>
> clang is required.
>
>
>
> …………
>
>
>
> clang -mmacosx-version-min=10.13 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include  -I/usr/local/include   -fPIC  -Wall -g -O2  -c capture.c -o capture.o
>
> In file included from capture.c:1:
>
> In file included from /Library/Frameworks/R.framework/Resources/include/Rinternals.h:44:
>
> In file included from /Library/Frameworks/R.framework/Resources/include/R_ext/Arith.h:41:
>
> In file included from /usr/local/include/math.h:8:
>
> In file included from /usr/local/include/features.h:10:
>
> /usr/local/include/forwards.h:10:10: fatal error: 'config.h' file not found
>
> #include "config.h"
>
>          ^~~~~~~~~~
>
> 1 error generated.
>
> make: *** [capture.o] Error 1
>
> ERROR: compilation failed for package ‘rlang’
>
>
>
> ………………….
>
>
>
> From: Carl Ganz <carlganz at gmail.com>
> Date: Sunday, May 3, 2020 at 12:04 PM
> To: Paul Fishwick <metaphorz at gmail.com>
> Cc: <rcpp-devel at lists.r-forge.r-project.org>
> Subject: Re: [Rcpp-devel] Cannot run rcpp due to missing include file(s)
>
>
>
> This is probably beyond my understanding at this point, but the solution I offered worked for me with R 4.0 and it looks like this example is R 3.6
>
>
>
> I vaguely remember some issues with interaction between older R version and newer Xcode 11.4.1 so moving to R 4 might help
>
>
>
> On Sun, May 3, 2020 at 9:25 AM Paul Fishwick <metaphorz at gmail.com> wrote:
>
> Carl
>
> First, thank you for this quick tip! I had no ~/.R directory and Makevars didn’t exist when I searched
>
> for it in Finder. So, I made the directdory ~/.R and then added a new file “Makevars” to that directory.
>
> I edited this file to add your PKG_CPPFLAGS:
>
>
>
> (base) <hostname>-5:.R paul$ more Makevars
>
> PKG_CPPFLAGS=-I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include
>
>
>
> Now I get another sequence of compiler errors. I’ll include only the first several lines:
>
>
>
> ……….
>
>
>
> In file included from fileb6e52d3a23c3.cpp:1:
>
> In file included from /Library/Frameworks/R.framework/Versions/3.6/Resources/library/Rcpp/include/Rcpp.h:27:
>
> In file included from /Library/Frameworks/R.framework/Versions/3.6/Resources/library/Rcpp/include/RcppCommon.h:29:
>
> In file included from /Library/Frameworks/R.framework/Versions/3.6/Resources/library/Rcpp/include/Rcpp/r/headers.h:67:
>
> In file included from /Library/Frameworks/R.framework/Versions/3.6/Resources/library/Rcpp/include/Rcpp/platform/compiler.h:100:
>
> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cmath:317:9: error: no member named 'signbit' in the global namespace
>
> using ::signbit;
>
>       ~~^
>
> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cmath:318:9: error: no member named 'fpclassify' in the global namespace
>
> using ::fpclassify;
>
>       ~~^
>
> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cmath:319:9: error: no member named 'isfinite' in the global namespace; did you mean 'finite'?
>
> using ::isfinite;
>
>       ~~^
>
> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/math.h:749:12: note: 'finite' declared here
>
> extern int finite(double)
>
>            ^
>
>
>
> From: Carl Ganz <carlganz at gmail.com>
> Date: Sunday, May 3, 2020 at 11:02 AM
> To: Paul Fishwick <metaphorz at gmail.com>
> Cc: <rcpp-devel at lists.r-forge.r-project.org>
> Subject: Re: [Rcpp-devel] Cannot run rcpp due to missing include file(s)
>
>
>
> I experienced similar issues on Mac and was able to fix by adding PKG_CPPFLAGS=-I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include to my .R/Makevars
>
>
>
> My understanding is that Mac no longer uses the /usr/local/include so you need to point it to the usr/include in the Developer SDK folder
>
>
>
> On Sun, May 3, 2020 at 8:59 AM Paul Fishwick <metaphorz at gmail.com> wrote:
>
>
>
>
> System: Mac OSX 11 (Catalina), Rstudio with R version 3.6.3 (but have also tried 4.0 and 3.3),
>
> Xcode version 11.4.1
>
>
>
> Went to:  http://adv-r.had.co.nz/Rcpp.html#rcpp-intro
>
>
>
> and tried library(rcpp) which worked fine because I previously had installed the rcpp package.
>
>
>
> The following yields an error in finding config.h. I did a "find" on config.h and sure enough it is not
>
> in the clang++ -I directory references. Here is what I have tried:
>
>
>
> Installing Xcode's command line tools (which were installed using xcode-select --install)
>
> Also, downloaded and installed the version of clang8 and gfortran6.1 from:
>
>
>
> https://cran.r-project.org/bin/macosx/tools/
>
>
>
> The following error occurs when I try this rcpp example from Hadley but it also happens whenever
>
> I try to install an R package from source. The compile fails due to not finding some include file.
>
>
>
> I would have thought that installing clang8 would have also included the proper include (.h) file directories
>
> with their contents needed by R.
>
>
>
> Is there something I am missing below? Thank you.
>
>
>
> > library(Rcpp)
> > cppFunction('int add(int x, int y, int z) {
> +   int sum = x + y + z;
> +   return sum;
> + }')
> In file included from fileb6e52d3a23c3.cpp:1:
> In file included from /Library/Frameworks/R.framework/Versions/3.6/Resources/library/Rcpp/include/Rcpp.h:27:
> In file included from /Library/Frameworks/R.framework/Versions/3.6/Resources/library/Rcpp/include/RcppCommon.h:29:
> In file included from /Library/Frameworks/R.framework/Versions/3.6/Resources/library/Rcpp/include/Rcpp/r/headers.h:67:
> In file included from /Library/Frameworks/R.framework/Versions/3.6/Resources/library/Rcpp/include/Rcpp/platform/compiler.h:100:
> In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cmath:304:
> In file included from /usr/local/include/math.h:8:
> In file included from /usr/local/include/features.h:10:
> /usr/local/include/forwards.h:10:10: fatal error: 'config.h' file not found
> #include "config.h"
>          ^~~~~~~~~~
> 1 error generated.
> make: *** [fileb6e52d3a23c3.o] Error 1
> clang++ -std=gnu++11 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG   -I"/Library/Frameworks/R.framework/Versions/3.6/Resources/library/Rcpp/include" -I"/private/var/folders/bt/1gd00p5s6n19m_bgh9b04gxc0000gp/T/RtmpRRyaky/sourceCpp-x86_64-apple-darwin15.6.0-1.0.4" -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -I/usr/local/include  -fPIC  -Wall -g -O2  -c fileb6e52d3a23c3.cpp -o fileb6e52d3a23c3.o
> Error in sourceCpp(code = code, env = env, rebuild = rebuild, cacheDir = cacheDir,  :
>   Error 1 occurred building shared library.
> >
>
> _______________________________________________
> 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
>
> _______________________________________________
> 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


More information about the Rcpp-devel mailing list