How to install/locate R.h and Rmath.h header files?

旧巷老猫 提交于 2019-12-30 08:14:48

问题


I am trying to compile some C code (called rand_beta) in terminal which contains the lines to include R.h and Rmath.h header files using gcc -o rand_beta rand_beta.c so I can then call the code from within R. However, I get the error messages:

rand_beta.c:1:15: error: R.h: No such file or directory
rand_beta.c:2:19: error: Rmath.h: No such file or directory

It seems that these header files which should come installed with R are not on my system.

Can someone guide me as to how I can get my computer to find the R header files? Do I need to download them from somewhere?


回答1:


The other answers try to guess where your R installation directory is. But there is a more robust solution. Use the R.home command in R to find it wherever it is:

> R.home('include')
/usr/lib64/R/include

That is the folder containing R.h and Rmath.h on my system. Your folder may be in a different place.




回答2:


You first need to locate those headers. In my system, they are located in /usr/lib64/R/include/R.h, part of the R-devel package I installed with yum.

Then use the -I option of gcc to tell gcc where to find them.

gcc -I/usr/lib64/R/include  -o rand_beta rand_beta.c

Then, you will also most probably need to export LD_LIBRARY_PATH to run your compiled program:

LD_LIBRARY_PATH=/usr/lib64/R/lib ./rand_beta



回答3:


Another way is to specify some environment variables to directly use the include path:

export CPATH=/usr/lib64/R/include/
export C_INCLUDE_PATH=/usr/lib64/R/include/
export CPLUS_INCLUDE_PATH=/usr/lib64/R/include/
export GCC_INCLUDE_DIR=/usr/lib64/R/include/

This should then run fine:

gcc -o rand_beta rand_beta.c


来源:https://stackoverflow.com/questions/20128078/how-to-install-locate-r-h-and-rmath-h-header-files

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!